类似于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里宏定义一个
#define LED1 PEout(11)
这个意思是我们用LED1来替代PEout(11),这样程序更清晰明了我们在做什么
这样我们通过写LED1=1,LED1=0,就可以实现对IO口的输出控制了
这里 的LED1=1是让PE口输出1
上一篇:学习原子哥STM32M4(1):GPIO输出配置
下一篇:STM32学习记录——开发总流程
推荐阅读最新更新时间:2024-11-08 14:57