STM32CubeMX——GPIO配置
说明
本文将以STM32F103C8T6单片机为例讲解GPIO引脚的配置
GPIO-output
配置部分
新建工程
- 搜索单片机型号(STM32F103C8T6)
- 选择单片机
- 创建工程
配置系统时钟
- 选择高速时钟(外部陶瓷晶体振荡器)
- 选择低速时钟(外部陶瓷晶体振荡器)
配置GPIO引脚(以PB15为例)
- 选择PB15引脚配置成output模式
- 配置引脚功能
- 切换到GPIO选项面板
- 选择对应的GPIO引脚(PB15)
- 对框内属性进行配置
- 配置GPIO输出级别:Low(低级别)
- GPIO的输出模式:Output Push Pull(推挽输出)
- GPIO是否上下拉:No pull-up and no pull-down(既不上拉也不下拉)
- GPIO输出速度:Low(低速)
- 用户标签:
配置时钟树
- 选择时钟设置界面
- 将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引脚电平(原状态为高电平,则变为低电平;原状态为低电平,则变为高电平)
应用举例
/* 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 */
GPIO-input
配置部分
新建工程
- 搜索单片机型号(STM32F103C8T6)
- 选择单片机
- 创建工程
配置系统时钟
- 选择高速时钟(外部陶瓷晶体振荡器)
- 选择低速时钟(外部陶瓷晶体振荡器)
配置GPIO引脚(以PB15为例)
- 选择PB15引脚配置成input模式
- 配置引脚功能
- 切换到GPIO选项面板
- 选择对应的GPIO引脚(PB15)
- 对框内属性进行配置
- GPIO模式:输入模式
- GPIO是否上下拉:Pull-up(上拉)
- 用户标签:
配置时钟树
- 选择时钟设置界面
- 将HCLK配置到72MHz,系统自动配置各个时钟
项目文件设置
- 选择文件设置选项卡
- 设置项目名称
- 设置存储位置
- 选择所用IDE
- 选择为每个功能生成一个.c和.h文件
- 生成代码
代码部分
函数说明
// 与GPIO-input有关函数
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//读取GPIO引脚状态
应用举例
/* 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 */