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

xiaoxiao2021-02-28  79

类似于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
转载请注明原文地址: https://www.6miu.com/read-76888.html

最新回复(0)