GPIO输出—–点灯(输出)和按键(输入)

  • Post author:
  • Post category:其他


这里写图片描述

LED灯连接到STM32的GPIO引脚,可以通过控制低电平(0)点亮,高电平(1)熄灭。

编程要点

1).使能GPIO端口时钟

2).初始化GPIO目标引脚为推挽输出模式

3).编写简单的测试程序,控制GPIO引脚输出高、低电平

代码分析

1. LED灯引脚宏定义

将与硬件相关的部分使用宏来封装,这些定义存储在“led.h”文件中。

//R-红色
#define LED1_GPIO_PORT GPIOB
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED1_GPIO_PIN GPIO_Pin_5
//G-绿色
#define LED2_GPIO_PORT GPIOB
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED2_GPIO_PIN GPIO_Pin_0
// B-蓝色
#define LED3_GPIO_PORT GPIOB
#define LED3_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED3_GPIO_PIN GPIO_Pin_1

以上是用代码把控制LED的GPIO端口、引脚以及GPIO端口时钟封装起来。


注:

GPIO 时钟宏“RCC_APB2Periph_GPIOB”是 STM32 标准库定义的 GPIO 端口时钟相关的宏,是用于指示寄存器位的。

这里写图片描述

一共32bit,4bit控制一个位,如果使能AFIO时钟即是((uint32_t)0x00000001),如果使能GPIOB时钟即是((uint32_t)0x00000008)。这也就是控制寄存器的位,用宏定义封装即是

#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)
#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)
#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)
#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)
#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)
#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)
#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)
#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)
#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)
#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)
#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)
#define



版权声明:本文为uyouth_my原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。