转载自:https://blog.csdn.net/u011976086/article/details/54342447#commentBox

之前使用过ucos,freertos,但是这个keil自带的RTX倒是没有在项目中使用过,只有在安福莱的论坛中,头比较丰富的教程,网上正好看到了这篇文章,很详细,有截图,因此转载,自己也按照他的方式实现了,

1、keil5安装好后,自带RTX的系统,像以前的RTX51一样,

2、keil5默认使用stm32的标准外设库的,不像cubemx使用hal库,

3、他的外设使用类似于cubemx,因该有相互借鉴的嫌疑,我大致看了看,很多都选项卡一样,打勾等等,类似于nfr的位置文件,想起这个芯片,真是往事不堪回首。。

综述
从keil4到keil5,keil的功能越来越强大。特别是keil5之后,出现了RTE配置环境,我感觉特别方便,省去了那么多移植步骤,对于像我们这种“懒癌”真是福音啊!RTX这款实时操作系统还是我在逛论坛是发现的,不看不知道,一看忘不了啊!从此就觉得得好好研习一番,不过实时操作系统原理基本都一样。但是RTX有它独特之处,就是它中断延时对M3/M4内核可以实现零等待,带有免版税,确定性的RTOS。话不多说,咱们开始创建RTX工程。前提是你得安装了keil5,我的是5.22版本。

创建工程
1.创建一个新工程

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

2.选择你的平台芯片。(我的是F103VET6)

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

3.勾选必要的组件。这里RTOS有2个版本,我选择的是版本4,版本区别可以点击后面的Description链接查看说明。当勾选其中的一个组件时,RTE窗口会提示缺少的组件(感叹标志),此时缺少什么就勾选什么

此图是描述RTOS如何使用,就相当于用户手册一样

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

4.一个完整工程必要的组件。我创建的工程只是简单的使用实时系统闪了个灯。RCC、GPIO、Framework必不可少

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

5.勾选完组件后,点击OK,回到工程界面。然后给Source Group1增加mian.c文件

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

6.选择Use Code Template ,添加mian.c文件

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

7.配置RTE_Device.h 和 RTX_Conf_CM.c文件。RTE_devie.h文件要配置正确的时钟系统,(这个和nrf的工程很类似的,是不是~~~)

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

配置RTXConf,这些选项跟UCOSIII很相似,基本上看命名上就能读懂,(这里要注意始终频率,我自己生成的是12000000,显然不对,应该72000000)

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

8.添加bsp文件到工程中去,并增加头文件路径,(我在自己的工程中,没有这个文件,当然可以自定义)

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

编写用户任务,(这个和cubemx生成的已经很像了,说明已经做了一层封装)

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

RTX的任务编写同UCOS差不多,包括线程函数、线程ID、线程对象。其实,注释已经给你很好的提示啦,只需要按着照做就可以啦

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

编写完后,就可以编译下载运行了。

回顾流程,RTX使用还是非常简单。没有像UCOS、FreeRTOS移植那么麻烦。

当然,你使用keil4还是得移植,其移植也非常简单。

另外,可能有读者发现没有中断服务文件stm32f10x_it.c,当你要使用譬如串口中断服务时,需要添加中断服务函数,这个文件的添加跟mian.c的文件是一样的。当然,读者也可以将中断服务函数写在bsp文件里,但这不是我的习惯,我比较喜欢统一管理的方式(这个是比较好的,但是也有不放在it.c文件的)。

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

当然,更方便的是调试功能,从Debug选项卡选择OS Support->System and Thread viewr,可以看到当前系统运行的线程状态。另一个Event viewr选型则需要平台的调试接口留出swo接口才行,也就是标准的SWD接口。否则是用不了此功能。

Keil5创建基于RTX的STM32工程(转载+自己的体会)-LMLPHP

总结

RTX和keil5联合使用,就如同双剑合璧,历害无比。使用keil调试RTX也是非常直观的,虽然ucos也有uc probe(这个需要破解)工具可以调试使用,但那个需要收费,不是很方便。况且,keil5的RTE环境还可以直接创建FileSystem、GUI、ETH、USB等复杂的工程,非常方便。
————————————————
原文链接:https://blog.csdn.net/u011976086/article/details/54342447

05-02 10:09