类似于51的sbit一样,位带操作可以简化我们的操作。
在原子哥的sys.h头文件中有以下定义:
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) #define PHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) #define PHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) #define PIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) #define PIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) out为输出,in为输入我们可以看到,比如PEout(2)就是指向E2的输出地址(可能有误,希望各位大虾纠正)
更深入的还有ReadInputDataBit函数
但本人比较懒惰觉得直接PEout(n)就可以很方便了,所以没有深入了解。。。不过待我完成了暑假任务后一定回来认真学习的
比如我们要用LED1连在PE2口上实现IO口的输出控制LED1闪烁
我们可以在led.h里宏定义一个