当前位置:   article > 正文

STM32CubeMX——GPIO配置_cubemx配置gpio

cubemx配置gpio

说明

本文将以STM32F103C8T6单片机为例讲解GPIO引脚的配置

GPIO-output

配置部分

新建工程

  • 搜索单片机型号(STM32F103C8T6)
  • 选择单片机
  • 创建工程在这里插入图片描述

配置系统时钟

  • 选择高速时钟(外部陶瓷晶体振荡器)
  • 选择低速时钟(外部陶瓷晶体振荡器)
    在这里插入图片描述

配置GPIO引脚(以PB15为例)

  • 选择PB15引脚配置成output模式
    在这里插入图片描述
  • 配置引脚功能
    • 切换到GPIO选项面板
    • 选择对应的GPIO引脚(PB15)
    • 对框内属性进行配置
      在这里插入图片描述
  1. 配置GPIO输出级别:Low(低级别)
  2. GPIO的输出模式:Output Push Pull(推挽输出)
  3. GPIO是否上下拉:No pull-up and no pull-down(既不上拉也不下拉)
  4. GPIO输出速度:Low(低速)
  5. 用户标签:

配置时钟树

  • 选择时钟设置界面
  • 将HCLK配置到72MHz,系统自动配置各个时钟
    在这里插入图片描述

项目文件设置

  • 选择文件设置选项卡
  • 设置项目名称
  • 设置存储位置
  • 选择所用IDE
    在这里插入图片描述
  • 选择为每个功能生成一个.c和.h文件
  • 生成代码
    在这里插入图片描述

代码部分

函数说明

// 与GPIO-output有关代码
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);//设置GPIO引脚电平
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//翻转GPIO引脚电平(原状态为高电平,则变为低电平;原状态为低电平,则变为高电平)
  • 1
  • 2
  • 3

应用举例

/* USER CODE BEGIN 3 */

//设置GPIO电平实例
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);//设置PB15引脚为高电平
HAL_Delay(500);//延时500ms
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//设置PB15引脚为低电平
HAL_Delay(500);//延时500ms

//翻转GPIO电平实例
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);//翻转GPIO引脚电平
HAL_Delay(500);//延时500ms

/* USER CODE END 3 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

GPIO-input

配置部分

新建工程

  • 搜索单片机型号(STM32F103C8T6)
  • 选择单片机
  • 创建工程在这里插入图片描述

配置系统时钟

  • 选择高速时钟(外部陶瓷晶体振荡器)
  • 选择低速时钟(外部陶瓷晶体振荡器)
    在这里插入图片描述

配置GPIO引脚(以PB15为例)

  • 选择PB15引脚配置成input模式
    在这里插入图片描述
  • 配置引脚功能
    • 切换到GPIO选项面板
    • 选择对应的GPIO引脚(PB15)
    • 对框内属性进行配置
      在这里插入图片描述
  1. GPIO模式:输入模式
  2. GPIO是否上下拉:Pull-up(上拉)
  3. 用户标签:

配置时钟树

  • 选择时钟设置界面
  • 将HCLK配置到72MHz,系统自动配置各个时钟
    在这里插入图片描述

项目文件设置

  • 选择文件设置选项卡
  • 设置项目名称
  • 设置存储位置
  • 选择所用IDE
    在这里插入图片描述
  • 选择为每个功能生成一个.c和.h文件
  • 生成代码
    在这里插入图片描述

代码部分

函数说明

// 与GPIO-input有关函数
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//读取GPIO引脚状态
  • 1
  • 2

应用举例

/* USER CODE BEGIN 3 */
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)==GPIO_PIN_RESET){//判断PB15引脚是否为低电平
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET);//设置PB14引脚为高电平
}else{
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);//设置PB14引脚为低电平
}
/* USER CODE END 3 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号