使用该方式,能够去除繁琐的添加库文件与添加头文件路径,大大简化了freeRTOS的移植。
1.在keil安装RT-Thread:点击pack Installer按钮,在弹出的 窗口中找到Pack页面下的CMSIS-FreeRTOS,如下图所示
2. 使用Project->new uVision Project创建工程,设置工程名字,保存工程路径后选择芯片型号。
3. 接下来在Manage Run-Time Environment界面配置使用的库,配置使用RT-Thread与stm32cubemx,如下图 所示,点击OK后,就会自动添加RT-Thread代码。
4.配置好后,点击ok按钮,会弹出如下选择框,点击Start STM32CubeMX启动软件。
5. 进入Stm32CubeMX可以发现工程已经自动创建好了,我们需要进行必要的配置。
首先系统正常运行必须需要时钟,使用选择HSE(根据自己的硬件选择)。
6. 再依次配置LED控制引脚与USART1(这里省略)。
7.进入Clock configuration页面,配置HCLK为最大的216MHz
8. 进入Project Manager页面,配置工程路径,工程名,堆栈大小,使用的IDE等,尤其是可以在Advanced setting中配置使用HAL库还是使用LL库,如下图所示
9 在Project 页面还有一项非常重要的配置,Toolchain/IDE一定要选择GPDSC,否则keil工程会编译出错,说找不到gpdsc文件
10. 点击“GENERATE CODE”按钮生成代码工程
11. 修改stm32f7xx_it.c文件
该文件主要屏蔽下面三个中断,因为这几个中断需要被FreeRTOS使用。
- SysTick_Handler
- PendSV_Handler
- SVC_Handler
12 修改port.c文件
由于我们使用了HAL库,则还需要在SysTick_Handler中调用HAL_IncTick()函数,由于FreeRTOS使用xPortSysTickHandler替代了SysTick_Handler,所以需要在该函数中添加HAL_IncTick()函数,该函数在port.c文件中(该文件默认只读,需要修改属性),
void xPortSysTickHandler( void )
{
...
HAL_IncTick();
...
}
13 根据需要配置FreeRTOSConfig.h文件,就可以愉快的使用FreeRTOS了
可参考https://www.cnblogs.com/noticeable/p/8150092.html
一般情况下需要进行如下修改
- 包含头文件#include "stm32f767xx.h" ,该文件定义了__NVIC_PRIO_BITS需要被用到
- configTOTAL_HEAP_SIZE 默认为4096 ,4k的栈空间干不了什么事,,这里我改成了10k(根据需要)
- configMAX_PRIORITIES 最大优先级默认为10 ,勉强够用,但是建议改为32
- configMAX_TASK_NAME_LEN 任务名字长度默认为10, 不太够用,稍微定义一个有意义的字符串就超过10了