自定义名称声明

KenKo |浏览2544次
收藏|2014/12/26 10:31

我想做的功能,在原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位声明就成了字指针声明——声明指针指向的绝对地址。

Angus

其他回答(0)
0人关注该问题
+1
 加载中...