STM32CubeMX软件介绍及工程文件生成

目录

一、STM32CubeMX 简介

二、STM32CubeMX软件使用

2.1 首先选择我们所使用的芯片

2.2 选择芯片后如图所示

2.3 在Clock Configuration里配置芯片的时钟树

2.4 生成工程文件

2.5 打开工程文件

 三 总结


一、STM32CubeMX 简介

    STM32CubeMX 是用于 32 位 ARM Cortex STM32 微控制器的图形工具。它通过分步过程可以非常轻松地配置STM32微控制器和微处理器,以及为Arm® Cortex®-M内核或面向Arm® Cortex®-A内核的特定Linux®设备树生成相应的初始化C代码。

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,通过自己对硬件的需要,进行选择,而后可以快速生成代码,减少开发人员的开发难度,时间和花销。

 在介绍STM32CubeMX使用前,首先介绍一下STM32HAL固件库

通过STM32CubeMX配置出的工程文件是采用的HAL固件库,HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。

随着HAL库的推出,ST公司也逐渐放弃了标准库的更新,其中F1系列的标准库已经很多年没有更新了。和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。

二、STM32CubeMX软件使用

2.1 首先选择我们所使用的芯片

这里我使用的是stm32f103c8t6的芯片,双击芯片所在行。

2.2 选择芯片后如图所示

左侧是芯片所有的功能模块,右边可以双击芯片引脚配置成自己需要的功能。

2.3 在Clock Configuration里配置芯片的时钟树

stm32f103c8默认是8M赫兹的系统时钟。

2.4 生成工程文件

配置好引脚功能及定义后,点击project Manager生成工程文件 ,需要注意的是生成前要先去Code Generator里勾选一些选项,可以让程序更加简洁清晰。

 

2.5 打开工程文件

生成好文件后,用KEIL打开后如下(最好先编译一下,养成习惯)

写程序需要在BEGIN和END之间写,否则下次重新生成后会把程序全部覆盖掉。

 

可以看到用STM32CubeMX生成的文件驱动都是基于HAL固件库。

 

 三 总结

STM32CubeMX用了之后发现其实很舒服,配置底层的东西省了很多事,可以把更多精力放在程序架构和代码逻辑上面。后续将会更新STM32CubeMX的使用教学。

### 如何使用 STM32CubeMXSTM32F103C8T6 配置 FreeRTOS #### 工具准备 为了在 STM32F103C8T6 上配置 FreeRTOS,需要安装以下工具: - **STM32CubeMX**: 用于初始化硬件外设并生成代码框架。 - **Keil MDK 或 IAR Embedded Workbench**: 编译和调试生成的代码。 --- #### 使用 STM32CubeMX 配置 FreeRTOS 的方法 通过 STM32CubeMX 可以轻松完成 FreeRTOS 的初始配置。以下是具体的操作说明: #### 创建新工程 打开 STM32CubeMX 并创建一个新的项目,选择目标微控制器型号 `STM32F103C8T6`[^1]。 #### 启用 FreeRTOS 支持 1. 在左侧的 “Project Manager” 中设置项目的名称、存储路径以及工具链(如 Keil MDK)。 2. 转到右侧的 “Configuration” 页面,在 “Middleware” 下找到并勾选 “FreeRTOS”。这一步会自动导入 FreeRTOS 库及相关配置文件[^2]。 #### 设置系统时钟 进入 “Clock Configuration” 页面,调整系统时钟频率至适合的目标值(例如 72 MHz)。这是确保 FreeRTOS 定时器正常工作的基础。 #### 配置任务优先级与堆内存大小 转到 “Middlewares -> FreeRTOS” 页面,可以看到多个选项供进一步定制: - **Config Tick Interrupt Priority**: 设定 SysTick 中断优先级,默认建议保持较低级别以减少延迟影响其他功能模块运行效率。 - **Heap Type Selection**: 根据需求选择合适的堆管理方式 (heap_1 至 heap_5),其中 heap_4 和 heap_5 提供更好的性能表现但可能增加 RAM 消耗。 #### 添加示例任务 可以通过点击 “Add Task Example Code Generation Support”,让 CubeMX 自动生成一些简单的测试任务代码作为入门学习材料。 #### 导出代码 当所有必要的参数都已设定完毕之后,切换回主界面顶部菜单栏下的按钮导出对应 IDE 的工程模板文件夹结构以便后续开发工作继续推进下去。 --- #### 示例代码片段 下面展示了一段基本的任务定义及其启动过程的例子: ```c #include "main.h" #include "cmsis_os.h" void StartDefaultTask(void const * argument); int main(void) { HAL_Init(); SystemClock_Config(); osKernelInitialize(); osThreadDef(default_task, StartDefaultTask, osPriorityNormal, 0, configMINIMAL_STACK_SIZE); osThreadCreate(osThread(default_task), NULL); osKernelStart(); } void StartDefaultTask(void const * argument) { while(1){ printf("Hello from FreeRTOS task!\r\n"); osDelay(1000); } } ``` 上述代码展示了如何创建一个默认的任务来周期打印字符串,并利用延时函数实现循环间隔控制。 --- #### 注意事项 - 如果计划使用串口或其他复杂外设,则记得同样要在 STM32CubeMX 内部激活它们并与各自驱动关联起来。 - 对于初学者而言,理解 RTOS 基础概念非常重要,包括但不限于任务调度机制、同步原语运用等方面的知识点。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

如愿小李单片机设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值