前言
使用STM32CubeMX配置GPIO的输入与输出。
1 创建STM32CubeMX工程
不会的可以看博客第一个STM32工程
2 配置RCC时钟
根据实际选择芯片的系统时钟源,此处将RCC配置为外部无源高速时钟
选择好系统的时钟,然后在Clock Configuration中设置芯片的运行频率
可以直接HCLK(MHz)的大小即可,软件会自动调整其他选项
2 配置下载模式
有人说这一步可以省略,我认为最好还是不要省略,因为在下载口被占用和其他一些不问因素时会导致程序下载或者条失败
此处配置为常用的SW四线下载模式,将SYS中的Debug选择成Serial Wire
配置GPIO
前期准备工作做完后就正式开始配置GPIO
此处配置PA1为输出,配置PA2为输入
在右边的芯片视图中点击PA1引脚,选择GPIO_Output,点击PA2,选择GPIO_Input
此时,PA1就已经具有了输出电平的能力,默认输出为低电平,PA2也具有了输入的能力
我们还可以在左侧的GPIO选项中配置GPIO的默认电平、模式以及速度等
GPIO输出
GPIO输入
配置完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)