×
单片机 > 单片机程序设计 > 详情

学习原子哥STM32M4(2):可以简化我们操作的位带操作

发布时间:2020-05-27 发布时间:
|

类似于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  位带操作  头文件 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2