This question already has answers here:
How to define a macro describing a memory location? [closed]
(2个答案)
3年前关闭。
假设IO部分是内存映射到地址0x32的指令
如何通过将值存储到相应的寄存器来构造写入端口的C语言宏?
然后您可以像这样调用它
请注意,这假定使用8位端口。
还要注意使用
(2个答案)
3年前关闭。
假设IO部分是内存映射到地址0x32的指令
#define portx 0x32
如何通过将值存储到相应的寄存器来构造写入端口的C语言宏?
最佳答案
如果必须使用宏,通常情况如下:
#define WRITE_PORT(port, val) *((volatile uint8_t *)(port)) = (val)
然后您可以像这样调用它
WRITE_PORT(portx, 0xff); // write 0xff to portx
请注意,这假定使用8位端口。
还要注意使用
volatile
,以防止编译器对I / O读/写进行优化。08-16 21:01