这是我的定义:
/* General Purpose Input/Output (GPIO) */
#define IOPIN (*((volatile unsigned long *) 0xE0028000))
#define IOSET (*((volatile unsigned long *) 0xE0028004))
#define IODIR (*((volatile unsigned long *) 0xE0028008))
#define IOCLR (*((volatile unsigned long *) 0xE002800C))
代码:
void put_on_other_port (void) {
asm("LDR R0, 0x00000080");
asm("STR R0, [0x00100000]");
}
我正在为 LPC2148 编程,我正在尝试编写 ARM 汇编代码以将 P0.7 的内容移动到 P0.20。我对汇编语法一点也不熟悉,所以当我尝试修复这段代码时会遇到各种编译错误。如何轻松地将 P0.7 的位移动到 P0.20(在汇编代码中)?
在 C 代码中试过这个:
IODIR |= 0x00100000;
.
.
.
if (IOPIN & 0x00000080)
IOSET = 0x00100000;
else
IOCLR = 0x00100000;
但也没有用..在 P0.20 上没有得到任何输出。
尝试在 C 代码中模拟 PWM:
IODIR |= 0x00100000;
.
.
.
int i;
IOSET = 0x00100000;
for (i = 0; i < 10000; i++);
IOCLR = 0x00100000;
for (i = 0; i < 10000; i++);
尝试无条件设置P0.20的值:
//IOSET = 0x00100000; // commenting out to toggle between setting and clearing
IOCLR = 0x00100000;