Skip to content

GPIO

基础知识看固件库相关的笔记

四步模型

  1. 初始化: 设置时钟, 设置参数(模式), IO设置, 中断设置(开中断, 设置NVIC)
  2. 读函数: 从外设读取数据
  3. 写函数: 向外设写入数据
  4. 中断服务函数: 根据中断位处理各种中断

配置步骤

  1. 使能时钟__HAL_RCC_GPIOx_CLK_ENABLE()
  2. 设置工作模式 HAL_GPIO_Init()
  3. 设置输出状态 HAL_GPIO_WritePin(), HAL_GPIO_TogglePin()
  4. 读取状态HAL_GPIO_ReadPin()

image-20231120181407191

image-20231120181518748

c
#define __HAL_RCC_GPIOB_CLK_ENABLE()   do { \
                                        __IO uint32_t tmpreg; \
                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPBEN);\
                                        /* Delay after an RCC peripheral clock enabling */\
                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPBEN);\
                                        UNUSED(tmpreg); \
                                      } while(0U)

点亮LED

image-20231121095535691

GPIO可以使用的模式, 推挽输出的时候可以实现, 使用推挽输出的由于没有办法输出高电平, 但是有高组态, 所以也可以使用

如果使用共阴极的时候使用的是推挽才可以正常使用

image-20231121095638149

电流可以比较低只是亮度比较低

重映射

以时钟作为例子

__HAL_AFIO_REMAP_TIM3_PARTIAL()