STM32 CubeMX新建工程+GPIO的研究
1. 新建工程并选择CPU型号及封装
1.1 新建工程
File->New Project
1.2 选择芯片型号
STM32L431RC系列,选择封装类型
2. 配置时钟源,这里使用外部时钟
3. GPIO口的配置
3.1 LED1与按键的原理图部分
3.2 gpio相关配置
- 1.配置IO口为输出模式,给LED供电
- 2.这里给PC13引脚添加一个user_label后,cubemx软件会在main.h文件中添加一个宏定义,如图,我们可以使用LED_GPIO_Port, LED_Pin来表示这个引脚,提高了程序的可移植性。如果没有该user_label,就需要使用GPIOC,GPIO_PIN_13 来表示这个引脚
与按键相连的IO口配置为输入模式,并设置为上拉模式,当按键被按下时,IO口检测到低电平
4. 配置时钟树:
5. 工程建立
工程命名,并选择保保存路径,尽量不要包含中文(若有中文,后续必要的文件无法自动加入工程,需手动加入),选择IDE型号为MDK-ARM,版本为V5
选择必要的文件选项并单独区分.h文件与.c文件
点击GENERATE CODE即可生成MDK-V5工程:
6. 代码部分
点亮LED并闪烁
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET); //灯亮
HAL_Delay(500); //延时500ms
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); //灭
HAL_Delay(500); //延时500ms
/* USER CODE BEGIN 3 */
}
按键控制LED灯
while (1)
{
/* USER CODE END WHILE */
if( HAL_GPIO_ReadPin( KEY1_GPIO_Port,KEY1_Pin ) == GPIO_PIN_RESET ) //KEY1按下
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET); //灯亮
}
if( HAL_GPIO_ReadPin( KEY2_GPIO_Port,KEY2_Pin) == GPIO_PIN_RESET ) //KEY2按下
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET); //灯灭
}
/* USER CODE BEGIN 3 */
}