转载自: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.创建一个新工程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

Keil5创建基于RTX的STM32工程(转载+自己的体会)的更多相关文章

  1. [STM32F10x] 从零开始创建一个基于标准库的工程

    硬件:STM32F103C8T6 平台:MDK-AMR V4.70 1.创建一个Keil uVision 的工程 要点:相同类型的源文件放在一起以便于管理       2.添加标准库源文件 3.添加几 ...

  2. 在linux下搭建STM32工程

    转载自康神博客:http://blog.csdn.net/u013298300/article/details/50243935 在LINUX下开始一个STM32工程 在LINUX下开始一个STM32 ...

  3. 使用keil建立标准STM32工程模版(图文详细版!)

    1.   模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当 ...

  4. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  5. 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)

    基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...

  6. 利用cocoapods创建基于git的私有库Spec Repo

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  7. Creating Dialogbased Windows Application (4) / 创建基于对话框的Windows应用程序(四)Edit Control、Combo Box的应用、Unicode转ANSI、Open File Dialog、文件读取、可变参数、文本框自动滚动 / VC++, Windows

    创建基于对话框的Windows应用程序(四)—— Edit Control.Combo Box的应用.Unicode转ANSI.Open File Dialog.文件读取.可变参数.自动滚动 之前的介 ...

  8. Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows

    创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...

  9. Creating Dialogbased Windows Application (2) / 创建基于对话框的Windows应用程序(二)Button的应用、新建子窗体 / VC++, Windows

    创建基于对话框的Windows应用程序(二) —— Button的应用.新建子窗体 可以发现上一节创建的窗体中,点击OK和Cancel两个按钮是没有任何反应的.现在我们来为他们添加退出对话框的功能. ...

随机推荐

  1. bolt继承关系和区别

    先上个图:  具体区别: IRichBolt/IBasicBolt 区别IRichBolt和IBasicBolt IRichBolt继承自IBolt和IComponent.IBasicBolt继承自I ...

  2. Lab_1:练习2——使用qemu执行并调试lab1中的软件

    一.实验内容 为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习: (一)从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行. (二)在初始化位置0x7c00设置实地址断点,测试 ...

  3. Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法

    在 Debug 工具窗口,如图点击左侧重置布局图标,你的console窗口就还原了.

  4. SQL根据指定节点ID获取所有父级节点和子级节点

    --根据指定节点ID获取所有子节点-- WITH TEMP AS ( SELECT * FROM table_name WHERE Id=' --表的主键ID UNION ALL SELECT T0. ...

  5. final,finally,finalize之间的区别。

    fianl:可以修饰类.变量.方法.修饰类不能被继承,修饰变量只能赋值一次,修饰方法不能被重写. finally是try语句体中的一个语句体,不能单独使用,用来释放资源. finalize()是在ja ...

  6. 2019 金蝶java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.金蝶等公司offer,岗位是Java后端开发,因为发展原因最终选择去了金蝶,入职一年时间了,也成为了面试官,之 ...

  7. android中fragment卡顿的原因

    首页的ViewPager有十几个Fragment,在快速切换的时候,容易产生卡顿现象. 二.分析当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快 ...

  8. Cheat Engine 创建线程

    打开游戏 扫描出阳光地址 打开自动汇编 激活测试 每次激活,阳光都会自增

  9. PHP公众号开发给用户发微信消息提醒功能

    最近做的一个项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示.针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口,微信文档 ...

  10. MySQL--performance schema学习

    启用performance schema 在MySQL 5.6.6版本后,performance schema被默认打开 通常MySQL的二进制版本都默认支持PS, 如果使用编译源码安装,在cmake ...