我想做的功能,在原8051的程式写法如下
sbit myclock = P1^0;
在M0的程式中该如何声明?
在h file声明是这样写
#define P10 (*((volatile uint32_t*)(AHB_BASE + 0x4220)))
如果是声明成
#define myclock (*((volatile uint32_t*)(AHB_BASE + 0x4220)))
感觉可读性不是很高,因为还要去查这个位对应的硬件位置。
2022/09/06 17:33
P1^0 这种写法是C51中特有的写法,这是C51编译器支持的写法,在标准C语句中,这是做异或运算。
大多数8051工程师习惯了位操作,M0内核是不支持位操作的,芯唐对每一个GPIO口,做了一个位映射:每一个GPIO口映射到一个字(4字节),位映射区的字读写,是读写这个字对应的GPIO口的一个位的值,位0有效。所以,GPIO位声明就成了字指针声明——声明指针指向的绝对地址。