STM32F4 GPIO 位带操作代码示例 - 设置输出模式及高电平
STM32F4 GPIO 位带操作代码示例:设置输出模式及高电平本篇博客将介绍如何使用 STM32F4 的位带操作来设置 GPIOA 引脚 0 为输出模式,并将其设置为高电平。### 代码示例c#include 'stm32f4xx.h'// 位带别名区域的基地址#define BIT_BAND_ALIAS_BASE 0x42000000// 定义一个指向别名区域的指针#define BIT_BAND_ALIAS(address, bit) / ((uint32_t )(BIT_BAND_ALIAS_BASE + ((address - 0x40000000) << 5) + (bit << 2)))// 定义常用宏#define SET_BIT(reg, bit) ((volatile uint32_t )(reg) = (1 << (bit)))#define CLEAR_BIT(reg, bit) ((volatile uint32_t )(reg) &= ~(1 << (bit)))#define GET_BIT(reg, bit) (((volatile uint32_t )(reg) >> (bit)) & 0x01)int main(void) { // 使能 GPIOA 时钟 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // 通过位带别名设置 GPIOA 引脚 0 为输出模式 SET_BIT(BIT_BAND_ALIAS(&GPIOA->MODER, 0), 0); // 通过位带别名设置 GPIOA 引脚 0 为高电平 SET_BIT(BIT_BAND_ALIAS(&GPIOA->BSRR, 0), 0); while (1) { // 在这里执行其他操作 }}### 代码解释1. 位带别名区域: STM32F4 的位带操作允许你使用一个地址位来访问一个外设寄存器中的单个位。BIT_BAND_ALIAS_BASE 定义了位带别名区域的基地址。2. BIT_BAND_ALIAS 宏: 该宏用于计算特定位在位带别名区域中的地址。它接受两个参数:外设寄存器的地址和要访问的位的位置。3. SET_BIT, CLEAR_BIT, GET_BIT 宏: 这些宏分别用于设置、清除和获取指定位的值。4. 主函数: * 首先,我们使用 RCC->AHB1ENR 寄存器使能 GPIOA 时钟。 * 然后,我们使用 BIT_BAND_ALIAS 宏和 SET_BIT 宏将 GPIOA 引脚 0 的模式设置为输出模式(GPIOA->MODER 寄存器的第 0 位)。 * 最后,我们使用 BIT_BAND_ALIAS 宏和 SET_BIT 宏将 GPIOA 引脚 0 设置为高电平(GPIOA->BSRR 寄存器的第 0 位)。### 注意事项 确保在编译代码之前,你已经正确配置了 STM32F4 的系统时钟和其他必要的设置。* 这只是一个简单的示例代码,你可以根据你的具体需求进行修改和扩展。希望这篇博客能够帮助你理解如何使用 STM32F4 的位带操作来控制 GPIO 引脚。
原文地址: http://www.cveoy.top/t/topic/Q0h 著作权归作者所有。请勿转载和采集!