当前位置:网站首页>STM32CubeMX配置生成FreeRTOS项目
STM32CubeMX配置生成FreeRTOS项目
2022-07-30 09:04:00 【luobeihai】
文章目录
1. 安装STM32CubeMX软件
ST公司现在出了一套封装更好的HAL库,并且搭配STM32CubeMX软件自动生成初始化外设相关的代码,再也不用自己去写初始化相关得代码了,非常方便。
1.1 下载安装
STM32CubeMX是ST公司的免费软件,我们去ST的官网:
找到下面获取软件的界面,下载相应版本即可
注意:STM32CubeMX是JAVA写的,所以需要安装JAVA的运行环境,怎么安装JAVA运行环境自己网上找一下。
1.2 安装要用到的芯片软件包
安装完CubeMX后,打开界面如下,然后点击Install/Remove,如下:

我们先安装要用到的一些芯片软件包,因为我使用的事STM32F407ZGT6芯片,所以我选择的是F4软件包。如下:
2. 配置FreeRTOS项目
2.1 创建工程

然后进入到选择芯片型号,这里我用的是STM32F407ZGT6芯片。

2.2 配置SYS

2.3 配置RCC
我们使能外部晶振。注意:如果是没有使用到外部低速晶振的话,就不要使能外部低速晶振了,否则程序上电会死在时钟设置相关得代码那里。
2.4 配置系统运行时钟
我们配置玩RCC外设之后,就可以去配置系统的各个外设运行的时钟了。如下图,外部晶振我的的开发板是8MHz,所以输入晶振要选中8。其他的配置其实按照软件的提示进行设置即可,如果配置的运行频率超过了芯片的最大运行频率,软件会高亮提示的。

2.5 配置UART1串口作为调试代码
在右侧Connectivity栏,然后选中USART1,然后配置如下界面:
因为我们使用中断方式接收串口数据,所以还需要使能USATR1的中断,和配置中断优先级:
2.6 配置一个LED引脚的GPIO
我们配置一个控制LED亮灭的GPIO引脚,用于测试程序。我的开发板上的LED引脚是PE3,所以我配置这个引脚。

2.7 使能FreeRTOS组件
CubeMX可以直接使能FreeRTOS组件,这里我选择V1版本,V1、V2具体有什么区别我也不是很了解。
然后其他的FreeRTOS相关的配置参数,就全部默认配置就行,后面需要的时候再改。

3. 生成代码
生成代码前,先配置下相关的 Project Manager 选项。

配置代码的文件组织结构,把下面的选项勾上,这样生成的每一个外设的代码都会有对应的 .c/.h 文件,不勾上会把所有代码都添加到main文件上。然后就点击右上角生成代码即可。
说明:CubeMX生成的FreeRTOS代码,他把FreeRTOS的所有操作又封装了一遍,在文件cmsis_os.c文件中。我们使用了ST封装的FreeRTOS接口的话,就算我们以后的代码使用了不同版本的FreeRTOS,那么用户代码也不用修改。
4. 测试生成的工程代码
生成代码后,在freertos.c文件中,CubeMX会生成一个默认的任务,我们去该任务的任务函数添加串口打印和LED亮灭的代码,如下:
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN StartDefaultTask */
uint8_t str[] = "hello world";
/* Infinite loop */
for(;;)
{
HAL_UART_Transmit(&huart1, str, sizeof(str), 500); // 串口1输出一串字符
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_3); // LED灯循环亮灭
osDelay(1000);
}
/* USER CODE END StartDefaultTask */
}
添加完代码后,编译下载到开发板。
然后打开串口调试工具,可以看到串口正常输出下面的打印信息,说明使用CubeMX创建的FreeRTOS工程没问题。
到此配置创建FreeRTOS工程项目完成。
边栏推荐
- Two solutions for Excel xlsx file not supported
- sort函数使用cmp出错Line 22: Char 38: error: reference to non-static member function must be called
- 函数式接口&Lambda表达式——简单应用笔记
- 获取显示器数据
- 功能测试、UI自动化测试(web自动化测试)、接口自动化测试
- Unity performance analysis Unity Profile performance analysis tool
- Integral Topic Notes - Path Independent Conditions
- 微软 SQL 服务器被黑,带宽遭到破坏
- 嘉为鲸翼·多云管理平台荣获信通院可信云技术服务最佳实践
- leetcode 剑指 Offer 52. 两个链表的第一个公共节点
猜你喜欢

日志导致线程Block的这些坑,你不得不防

虚幻引擎图文笔记:could not be compiled. Try rebuilding from source manually.问题的解决
![[Fun BLDC series with zero basics] Taking GD32F30x as an example, the timer related functions are explained in detail](/img/1d/700c79a766f115d5d0f3bd8263d67c.png)
[Fun BLDC series with zero basics] Taking GD32F30x as an example, the timer related functions are explained in detail

Google Cloud Spanner的实践经验

Excel xlsx file not supported两种解决办法【杭州多测师】【杭州多测师_王sir】

转行软件测试,报培训班3个月出来就是高薪工作,靠谱吗?

ACL 2022 | Introduce angular margin to construct comparative learning objectives and enhance text semantic discrimination ability

leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上

The difference between DDR, GDDR, QDR
随机推荐
PyQt5快速开发与实战 8.1 窗口风格
分布式系统大势所趋,银行运维如何与时俱进?
qsort 函数的使用及其模拟实现
Two solutions for Excel xlsx file not supported
els 方块停在方块上。
实施敏捷过程中这些常见的问题你可曾遇到?
嘉为鲸翼·多云管理平台荣获信通院可信云技术服务最佳实践
Is R&D moving to FAE (Field Application Engineer), is it moving away from technology?Is there a future?
快解析结合泛微OA
LeetCode二叉树系列——94.二叉树的中序遍历
Taosi TDengine 2.6+ optimization parameters
编程界的“躲猫猫”比赛 | 每日趣闻
读书笔记:《这才是心理学:看穿伪心理学的本质(第10版)》
leetcode 剑指 Offer 48. 最长不含重复字符的子字符串
知识图谱之Cypher语言的使用
conda 导出/导出配置好的虚拟环境
HCIP - MPLS VPN experiment
[Fun BLDC series with zero basics] Taking GD32F30x as an example, the timer related functions are explained in detail
Oracle 创建和操作表
2022 Hangzhou Electric Multi-School 1st Game