STM32CubeMX使用示例---生成LED闪烁工程

这里记录一下通过STM32CubeMX配置STM32G030C8T6,生成LED闪烁的示例工程的过程,用来学习使用STM32CubeMX;

以STM32G030C8T6 PB4 脚做LED 输出闪烁为例,外部8MHZ 晶振,系统主频64MHZ,LED 灯1 秒钟闪烁一次做一个示例程序。

使用STM32CubeMX生成STM32G030C8T6的LED闪烁示例工程过程如下所示:

1 新建工程

点击File 菜单下的New Project

在这里插入图片描述

选择芯片型号,如下图所示先输入芯片型号,目前这边输入STM32G030C8,

在这里插入图片描述

双击选择,就确定了芯片型号,界面会变成如下图所示

在这里插入图片描述

2 配置SWD下载引脚

如下图所示,在Pinout&Configuration 栏目的System Core 下,先点击SYS,再勾选Serial Wire 框,
配置好SWD 下载引脚设置:

在这里插入图片描述

3 配置RCC

如下图,先点击RCC,在HSE 配置中选择Crystal/Ceramic Resonator 外部晶振设

在这里插入图片描述

4 设置系统主频

如下图, 先点击Clock Configuration 栏目,按下图的1,2,3,4 步骤完成系统64MHZ 主频设置:

在这里插入图片描述

5 配置GPIO输出

按下图 的1,2,3 步骤完成PB4 引脚配置成GPIO 输出设置:

在这里插入图片描述
配置成功后如下图所示:
在这里插入图片描述

6 生成工程

按照下图的步骤,进行项目配置,项目名称和路径设置等,生成项目的类型选择STM32CubeIDE(我这里以STM32CubeIDE为例,如果你要试用keil5,那就选择MDK-RAM,如果要使用makefile,就选择Makefile),注意项目名称和路径不要有中文名;
在这里插入图片描述

最后全部设置完毕后点击create code,生成项目代码:

在这里插入图片描述

生成的工程如下图所示:
在这里插入图片描述

7 STM32CubeMX使用总结

STM32CubeMX是一款由STMicroelectronics开发的集成开发环境(IDE)工具,用于快速配置和生成基于STM32微控制器的项目。它提供了一个直观的图形界面,使开发人员能够轻松地进行微控制器的配置和初始化设置,包括引脚映射、时钟配置、外设配置等。

以下是使用STM32CubeMX的一般步骤:

下载和安装STM32CubeMX:
你可以从STMicroelectronics的官方网站下载适用于你的操作系统的最新版本的STM32CubeMX,并按照安装向导进行安装。

打开STM32CubeMX:
打开STM32CubeMX应用程序,你将看到一个空白的项目窗口。

创建一个新项目:
在项目窗口中,点击"New Project"按钮,选择你的STM32微控制器型号,并选择你的开发板。

配置微控制器:
在配置选项卡中,你可以配置引脚映射、时钟设置、外设配置等。根据你的项目需求,进行相应的配置。

引脚映射:在Pinout & Configuration选项卡中,你可以选择每个引脚的功能,如GPIO、UART、SPI等,并进行相应的映射设置。

时钟设置:在RCC Configuration选项卡中,你可以配置系统时钟和外设时钟的频率和源。

外设配置:在Peripherals选项卡中,你可以选择需要使用的外设,并进行相应的配置,如UART、SPI、I2C等。

生成代码:
点击"Project"选项卡,在右侧窗口中选择你想要生成的代码类型(例如,基于HAL库的代码),然后点击"Generate Code"按钮。STM32CubeMX将根据你的配置生成相应的初始化代码。

导入到IDE:
将生成的代码导入到你选择的集成开发环境(IDE)中,例如Keil、IAR等。在IDE中,你可以编写你的应用程序代码,并进行编译和调试。

开发和编程:
在IDE中编写你的应用程序代码,并使用相应的编程工具将代码烧录到STM32微控制器中。你可以使用调试器进行单步调试和观察变量的值,以确保代码的正确性和功能的正常运行。

总结起来,使用STM32CubeMX可以简化STM32微控制器的配置和初始化过程,提高开发效率。它提供了直观的图形界面,帮助开发人员轻松配置引脚映射、时钟设置和外设配置,并生成相应的初始化代码,使得开发过程更加便捷。通过将生成的代码导入到集成开发环境中,你可以编写应用程序代码并进行编译、调试和烧录,从而完成STM32微控制器的开发和编程工作。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先你需要在STM32CubeMX配置定时器和按键的GPIO口,然后生成代码。 在生成的代码中,你需要找到定时器的中断处理函数,在其中编写控制LED闪烁的代码。具体地,可以设置一个变量来记录LED闪烁速度,然后在定时器中断处理函数中根据按键状态更新这个变量的值,从而改变LED闪烁速度。 以下是示例代码: ```c /* 定义三个LED的GPIO口 */ #define LED1_Pin GPIO_PIN_0 #define LED1_GPIO_Port GPIOA #define LED2_Pin GPIO_PIN_1 #define LED2_GPIO_Port GPIOA #define LED3_Pin GPIO_PIN_2 #define LED3_GPIO_Port GPIOA /* 定义三个按键的GPIO口 */ #define KEY1_Pin GPIO_PIN_3 #define KEY1_GPIO_Port GPIOB #define KEY1_EXTI_IRQn EXTI3_IRQn #define KEY2_Pin GPIO_PIN_4 #define KEY2_GPIO_Port GPIOB #define KEY2_EXTI_IRQn EXTI4_IRQn #define KEY3_Pin GPIO_PIN_5 #define KEY3_GPIO_Port GPIOB #define KEY3_EXTI_IRQn EXTI9_5_IRQn /* 定义LED闪烁速度变量和按键状态变量 */ uint32_t blink_speed = 1000; // 初始闪烁速度为1s uint8_t key1_pressed = 0; uint8_t key2_pressed = 0; uint8_t key3_pressed = 0; /* 定时器中断处理函数 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM2) // 如果是定时器2的中断 { static uint32_t cnt = 0; /* 每到闪烁速度的倍数时,翻转LED的状态 */ if (++cnt >= blink_speed) { cnt = 0; HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin); } /* 检测按键状态并更新闪烁速度变量 */ if (key1_pressed) { blink_speed = 1000; // 闪烁速度为1s } else if (key2_pressed) { blink_speed = 500; // 闪烁速度为0.5s } else if (key3_pressed) { blink_speed = 250; // 闪烁速度为0.25s } } } /* 按键中断处理函数 */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == KEY1_Pin) // 如果是按键1的中断 { key1_pressed = 1; key2_pressed = 0; key3_pressed = 0; } else if (GPIO_Pin == KEY2_Pin) // 如果是按键2的中断 { key1_pressed = 0; key2_pressed = 1; key3_pressed = 0; } else if (GPIO_Pin == KEY3_Pin) // 如果是按键3的中断 { key1_pressed = 0; key2_pressed = 0; key3_pressed = 1; } } ``` 在这个示例代码中,我们使用了定时器2和三个按键来控制三个LED闪烁速度。当按下不同的按键时,闪烁速度变量会被更新,从而改变LED闪烁速度。在定时器中断处理函数中,我们使用一个计数器来记录时间,并在到达闪烁速度的倍数时翻转LED的状态。需要注意的是,这里使用了静态变量来存储计数器的值,因为定时器中断处理函数会被不停地调用,每次调用都会重新定义一个局部变量,而无法记录上一次的计数器值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘凉~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值