STM32CubeMX配置GPIO

前言

使用STM32CubeMX配置GPIO的输入与输出。

1 创建STM32CubeMX工程

不会的可以看博客第一个STM32工程

2 配置RCC时钟

根据实际选择芯片的系统时钟源,此处将RCC配置为外部无源高速时钟
STM32CubeMX配置GPIO_第1张图片
选择好系统的时钟,然后在Clock Configuration中设置芯片的运行频率
STM32CubeMX配置GPIO_第2张图片
可以直接HCLK(MHz)的大小即可,软件会自动调整其他选项

2 配置下载模式

有人说这一步可以省略,我认为最好还是不要省略,因为在下载口被占用和其他一些不问因素时会导致程序下载或者条失败
此处配置为常用的SW四线下载模式,将SYS中的Debug选择成Serial Wire
STM32CubeMX配置GPIO_第3张图片

配置GPIO

前期准备工作做完后就正式开始配置GPIO
此处配置PA1为输出,配置PA2为输入

在右边的芯片视图中点击PA1引脚,选择GPIO_Output,点击PA2,选择GPIO_Input
STM32CubeMX配置GPIO_第4张图片
此时,PA1就已经具有了输出电平的能力,默认输出为低电平,PA2也具有了输入的能力
我们还可以在左侧的GPIO选项中配置GPIO的默认电平、模式以及速度等

GPIO输出
STM32CubeMX配置GPIO_第5张图片
GPIO输入
STM32CubeMX配置GPIO_第6张图片
配置完GPIO后在Project Manager中配置好项目名和项目地址以及以及编译器
然后就可以生成MDK的代码啦

修改GPIO输出电平的函数

/**
  * @brief  Sets or clears the selected data port bit.
  *
  * @note   This function uses GPIOx_BSRR register to allow atomic read/modify
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  *
  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
  * @param  GPIO_Pin: specifies the port bit to be written.
  *          This parameter can be one of GPIO_PIN_x where x can be (0..15).
  * @param  PinState: specifies the value to be written to the selected bit.
  *          This parameter can be one of the GPIO_PinState enum values:
  *            @arg GPIO_PIN_RESET: to clear the port pin
  *            @arg GPIO_PIN_SET: to set the port pin
  * @retval None
  */
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

反转GPIO电平的函数

/**
  * @brief  Toggles the specified GPIO pin
  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
  * @param  GPIO_Pin: Specifies the pins to be toggled.
  * @retval None
  */
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

读取GPIO输入电平的函数

/**
  * @brief  Reads the specified input port pin.
  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
  * @param  GPIO_Pin: specifies the port bit to read.
  *         This parameter can be GPIO_PIN_x where x can be (0..15).
  * @retval The input port pin value.
  */
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

你可能感兴趣的:(STM32)