让菜鸟秒变stm32高手的STM32CubeMX

介绍了STM32CubeMX工具的基本使用流程,包括芯片选型、设定芯片功能及生成初始化代码等内容,帮助开发者简化STM32开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         菜鸟到高手,显得有些霸气哈,不过的确如此,官方带给我们一个比较实用的stm32的工具。这个工具就是STM32CubeMX,昨天玩freeRTOS的时候就提到过。说到freeRTOS,这里就多说两句。全局变量,在任务间相互访问的时候也是需要临界保护的,不然可能会出现奇怪的问题。不过我们可以关掉时间片调度,任务间可以访问全局变量而不用加保护(不等于菜鸟可以随意代码)。关闭了时间片调度,只有发生vTaskDelay的时候才会上下文切换。只要代码合理访问全局变量可以不加保护的。因此代码也不是可以任意书写的,关于freeRTOS的问题,多看看源码,一切都会有答案。源码较少,这里就不过多介绍。关闭时间片不是网上说的configUSE_TIME_SLICING这个宏定义,老鸟发现这个宏压根没用哈,嘿嘿。阅读源码可以找到相关宏配置。不过不建议关闭,时间片调度也可以让一个任务在执行一定时间后切换到其他就绪任务去执行。如果有freeRTOS相关问题,可以留言给我。废话说多了点哈,继续我们的STM32CubeMX。下面我们来讲讲这个工具的作用,讲完后,可以自己下载一个试试,挺简单不多介绍。

     到官网下载STM32CubeMX,并安装。

     1:芯片选型

       打开STM32CubeMX,我们点击new project,我们就可以进行芯片选型,如果你下载了打开了这个工具,是不是很惊讶,stm32的所有产品型号都在里面,而且左下提供了资源勾选,比如你要以太网支持,勾选以太网选项,所有的支持以太网的stm32芯片才会被显示,旁边还有个max的栏目指示了芯片最多支持该功能的个数。空白的一般默认只有一个。下图是我勾选以太网的截图。

     

上图不仅提供了芯片,还提供了价格,是否在售,封装,存储,频率等一些列信息。

除了cpu资源可以选型外,上面还提供了脚多少,存储大小等非常灵活的选型方式。

我们选择其中一个的单片机后。右上部分给我们提供了完美的支持。

第一个选项提供了改cpu

的特性,我们可以大概的了解选中的cpu资源。


第二个选项提供该cpu框图,截图图片太大,这里就不截图了。

第三个选项提供了cpu文档,这个文档非常多也非常全面,基本不用在网上东找西找了,主要给硬件工程师用。

第四个选项提供了cpu的相关设计资源,软件编程文档,给软件工程师用,非常全面,包括网上很少用到的文档资料,比如系统移植相关的底层资料(堆栈,指令,汇编)。

第五个选项提供了芯片购买途径,这个每个人自己选择吧。

第六个选项开始工程,芯片选好了,就可以开始工程。

2:设定芯片。

芯片选好后,可以开始设定芯片。这就是软件工程师的好帮手呀。比如我要以太网功能,勾选上以太网即可,他就会自动分配出芯片对应的以太网接口。如下图:


上面我选了标准的MII接口。很多人可能就不理解,你勾了个以太网,咋报错了。老鸟告诉你为啥变红了,stm32有个复杂的功能就是io口复用,勾选mii后分配的io口和spi2以及iis口重合了,所以这个工具非常智能的提示了出来,非常神奇吧。告诉你他们不能使用了。还有些变黄了,说明他们可以选择性使用,真是太方便了,省去了查资料慢慢找io的痛苦。比如我们还要给它个外部时钟。我们勾选时钟即可,响应的时钟脚就会分配出来。

如果要将某个脚设置成输入输出那就更简单了,鼠标点选对应的io口选择对应功能即可,比如我单击PA6,它的所有功能可以轻松选择:


软件使用比较简单,不过多解释,一看就明白,设置完芯片功能后,我们就设定系统各项功能时钟。

选择时钟设置页面(clock configuration)时钟轻松设定,如下图,简单明了,不过多解释了:


时钟配置完成后,可以切换到configuration选项对功能进一步设定,里面参数都是常用的功能,设置较为简单。就不多举例了,比如网络功能里面设置mac地址等。


       3:生产初始化代码

        经过上面的图形化设定,我们可以直接生产初始化代码。省去我们查阅资料慢慢配置的的环节,时间更多的利用在应用层设计。点击project下面的生成代码选项。输入工程名(根据你项目需要起名),这里我就随便输入一个名字。设定好相关参数。点击ok即可。顺便说下,这个工具是配带教程的,我这里只是告诉大家有这样个工具可以加速开发,具体设置参考官方教程。

生成后打开文件夹内容如下:


上图的inc 和src文件夹里面是生成的主要代码,其他几个文件夹里面的东西,大家可以根据自己需要选择。src文件夹文件如下:


打开熟悉的main.c,可以看到如下内容:


初始化已经完成,直接写自己的功能即可了,然后就是加入到工程里面编辑,是不是非常简单。熟悉的话10来分钟一个工程构架就出来了。这样一来,stm32就变成最简单的单片机了,有木有,这个是基于库函数的,io操作直接可以查看库函数手册完成。这个工具主要是加速底层开发。轻松弄出自己的应用程序。对于新入手stm32来说,用这个库函数,让开发变得简单。减少定时器,can,ad,line等外围配置花去的时间,图像化配置,秒变高手。最主要的是功能直观可见,编辑性好,可导入工程编辑。修改配置也简单

### STM32CubeMax 与 uC/OS-II 的集成 #### 集成背景 STM32 是一款广泛使用的微控制器,其强大的功能使其成为嵌入式系统的理想选择。uC/OS-II 则是一个轻量级、抢占式的实时操作系统 (RTOS),适用于资源受限的环境[^1]。为了充分利用 STM32 和 uC/OS-II 的优势,开发者通常会尝试将两者集成在一起。 #### STM32CubeMax 工具链概述 STM32CubeMax 是 STMicroelectronics 提供的一套工具集,旨在简化基于 STM32 微控制器的应用程序开发过程。它不仅提供了硬件抽象层 (HAL) 和低层驱动程序的支持,还通过图形化界面帮助配置外设和生成初始化代码[^2]。 #### 集成步骤概览 虽然具体实现可能因项目需求而异,但以下是常见的集成要点: 1. **移植层准备** - 移植 uC/OS-II 至目标平台时,需完成 `OS_CPU_C.C` 和 `OS_CPU_A.ASM` 文件中的函数定义。这些文件包含了特定于处理器架构的任务切换逻辑和其他底层操作。 2. **时钟源设置** - 使用 STM32CubeMX 初始化系统时钟并确保提供稳定的定时器中断作为 RTOS 节拍计时的基础。此节拍频率一般设定为 1kHz 或其他适合应用场合的值[^3]。 3. **任务管理接口设计** - 定义多个优先级不同的线程来执行各自的功能模块;例如串口通信可以由一个独立的任务负责处理收发数据包的工作流程。 4. **内存分配策略调整** - 根据实际需要合理规划堆栈大小以及静态 vs 动态存储区的比例关系,避免运行期间发生溢出错误或者浪费宝贵的空间资源。 5. **调试验证阶段** - 编译链接完成后加载到目标板上测试基本框架能否正常运转起来,随后逐步加入更复杂业务逻辑直至整个应用程序达到预期效果为止。 ```c // 示例:创建两个简单的任务 #include "includes.h" void TaskBlinkLED(void *pdata); /* LED闪烁任务 */ void TaskUARTComm(void *pdata); /* UART通讯任务 */ INT8U err; OS_EVENT *Mailbox; // 创建邮箱用于消息传递 int main() { OSInit(); // 初始化μC/OS-II OSTaskCreate(TaskBlinkLED, NULL, &TaskBlinkLEDBSS, TASK_BLINK_PRIO); OSTaskCreate(TaskUARTComm, NULL, &TaskUARTCommBSS, TASK_UART_PRIO); Mailbox = OSMboxCreate(NULL); // 建立一个空信箱对象实例 OSStart(); } ``` #### 注意事项 - 确保所有中断服务例程都遵循 μC/OS-II 对 ISRs 的特殊要求,比如调用相应的 API 函数通知内核发生了事件以便唤醒等待状态下的高优先生命周期内的进程实体个体单元等等情况之下才行得通哦亲~ ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值