干货 | 浅谈如何使用RL_RTX

使用keil自带的RTOS有段时间了,简单说说如何使用RTX吧。
首先简单回答下列几个问题:

1、RTX怎么下载
使用RTX不需要下载源码之类的,只要你装上了keil,那么你就可以使用RTX,RTX的源码、使用手册及配置文件都在keil安装目录下。

2、如何移植
只需在Option for Target ',,,' --》 Target 中的Operation system选项框修改为RTX Kernel,将中断配置文件中的SVC_Handler,PendSV_Handler,SysTick_Handler中断处理函数注释掉(未使用的就忽略),并在需要使用到RTX的文件中包含<RTL.h>头文件即可使用RTX RTOS了。

由于手头没有开发板,只有个当前项目使用的板子,我就使用板子上的两个LED灯简单的演示下如何使用RTX,下面是板子及部分原理图,水平有限,不足之处还望指出!

程序简述:


开发环境:
        开发工具:keil V5.20,stm32cubemx 4.18.0
        硬件设备:STM32F103C8T6

实现功能:
        使用RTX任务点亮LED0,LED1

声明:
        以下仅是简单的演示,具体使用时还需要根据具体需求查阅相关手册、资料(我把我手头有的RTX的相关资料已经上传到ee的下载中心了,有兴趣的可以下载看看)

为了完整的演示,我从采用stm32cubemx新建一个裸奔程序谈起(已经建立工程的直接忽略就行),减少盲区。

一、新建裸奔程序
1、新建一个stm32f103c8t6的项目

2、配置LED0、LED1的引脚及配置调试引脚
(由于我采用的是SW串口调好似,这里我选择的是串口调试,由于板子的调试方式不尽相同,这里需要根据实际进行选取)
若使用cube进行配置,SYS选项默认为不使用调试功能,切记需要配置SYS选项,否则将造成烧完程序后下回无法烧写程序,提示找不到设备!

3、时钟配置,这里我没进行配置,采用内部晶振,时钟配置均为默认值

4、配置GPIO(这里按照上述原理图进行配置,设置默认电平为高电平,此时LED未点亮)

5、生成LED_demo项目,并进行首次生成项目的一些配置

5、项目生成后打开项目、添加翻转LED0、LED1的代码并调试裸奔程序(现象:此时板子上的LED0、LED1按顺序闪烁)

裸奔条件下调试完成后,进行RTX移植操作

二、移植RTX RTOS
1、复制配置文件(注意,这里的配置文件根据MCU不同需要选取不同的配置文件,具体查阅手册)

2、导入并编辑配置文件,简单介绍下下列配置
Number of concurrent running tasks:
       这里的值代表着当前RTOS可以执行的任务上限,此值可大于程序中创建的任务数量,但不能小于程序中创建的任务数量

Number of tasks with user-provided stack:
       由用户自定义桟大小的任务数量,我试过不设置该值自定义任务桟大小,操作成功,因此,这里不设置应该是可以的,理解有误还望指出!

Task stack size:
       任务桟大小,就是为创建的任务桟分配的默认桟大小,如果是独立分配的话就跟它无关了。

Check for the stack overflow:
       桟溢出检测,调试时在任务视图中可以看到各任务桟占用的百分比,不知道是不是bug,即使我不选中,任务视图中仍然存在桟溢出检测,,,所以选不选一个样

Run in privileged mode:
       是否启用抢占调度模式

Hardware timer:
        选取硬件时钟源,这里我使用的是系统内核时钟

Timer clock value:
        时钟频率,由于先前在cube未对时钟进行配置,默认时钟频率为8MHz,所以这里我填的是8000000

Timer tick:
        时间片大小,这里我设置的是1ms

Round-Robin Task switching:
        是否启用时间片轮转调度模式

Round-Robin Timeout:
        这里的5代表着5个时间片,由于Timer tick设置为1ms,这里代表着每个任务最长可持续运行5ms,接着需要将CPU控制权交给其它在等待队列中的任务

Number of user timers:
        软件定时器数量,根据需要设值即可,这里的定时器是“一次性”的,执行一次结束下回需要使用时需要重新创建

ISR FIFO Queue size:
        ISR FIFO 队列大小

3、在Optons for Target ",,," 配置中选择操作系统为RTX内核,并将之前谈到的三个中断处理函数注释掉

4、包含头文件、创建任务、移植裸奔程序、启动RTX

5、编译程序进入调试窗口进行相应的设置
打开任务视图

启用界面周期刷新功能,否则任务视图中的任务运行状态无法动态更新

运行程序后在任务视图中就可以看到先前建立的两个任务的运行状态了,此时LED0、LED1同时亮、同时灭。

6、修改程序,添加事件标志位(同步处理),使LED0、LED1与裸奔程序下的依次闪烁一致

此时的现象就与裸奔时一致了,事件标志位的功能与信号量、互斥量一样都是为了解决同步问题,习惯用哪个就使用哪个,至于其它的功能函数,具体的参见RTX的官方指南(已上传至下载中心),这里就不一一详述了,给刚接触RTX的开个头,大神们忽视即可。
与裸奔时的程序现象一样,实物图就不贴了,任务视图如下图所示:

(0)

相关推荐

  • 嵌入式软件底层开发的框架陈述

    在底层代码编写中,初始的框架设计总会面临选择,针对实际的硬件使用环境,大家对于使用的软件框架有很多选择,今天我简单描述一些比较常用的架构,让大家能够理解并选择合适的架构. 总述 1. 简单的顺序执行程 ...

  • 【原创文字】关于实时操作系统的话题(上)

    今天有位朋友私信我,和我讨论了一些关于实时操作系统的话题.讨论结束后,我针对这个话题具体写了些关于实时操作系统的文字,分享给大家,希望可以对大家有帮助.   两个问题 首先,让自己回想一个操作系统,然 ...

  • 怎么看懂别人写的单片机项目代码?

    https://m.toutiao.com/is/djDbJC8/ 记得刚开始接触代码的时候,总觉得很神秘,也好奇到底是怎样的牛人,才能把这么多复杂的"天书"写出来去. 当时多希望 ...

  • 实时操作系统的滴答Tick设置多少才合适?

    最近有读者问了这么一个问题:为啥RTOS的系统滴答(Tick)默认配置都是1000,我配置为100.10000,或者2000可以不? 相信很多初学者都有这个疑问,包括我初学RTOS也曾困惑滴答配置不同 ...

  • 统计学干货 | 浅谈贝叶斯统计

    转载自:京师统计团总支学生会 浅谈贝叶斯统计 贝叶斯统计是英国学者托马斯·贝叶斯在<论有关机遇问题的求解>中提出一种归纳推理的理论,后被一些统计学者发展为一种系统的统计推断方法,称为贝叶斯 ...

  • 干货 | 浅谈交易系统设计的原则与流程

    只做专业交易软件 所谓"交易系统",就是"完整的交易规则体系".这里所说的"交易",简单地说,就是"买卖",在讨论中,我 ...

  • 干货 | 浅谈陈皮功效 ——认识陈皮之专题一

    说到陈皮,中医人应该无人不识二陈汤.二陈汤有哪二陈?陈皮和半夏,古人认为半夏也是陈放者功效佳,是以两个陈久的药物命名一个方剂. 陈皮辛苦性温,有理气健脾.燥湿化痰之功,半夏味辛性温,燥湿化痰.降逆止呕 ...

  • 干货 | 浅谈基于模型的工艺评审

    摘要 市场激烈竞争不但要求企业提供物美价廉的产品,而且要不断提高质量.降低成本.竞争能力的本质是技术能力和管理水平的竞争.现代产品的构造和功能越来越复杂,在保证产品性能.质量要求的前提下,如何降低制造 ...

  • 干货 | 浅谈SEI膜知识

    SEI膜定义 在锂离子电池首次充放电过程中,电极材料与电解液在固液相界面上发生反应,形成一层覆盖于电极材料表面的钝化层(passivating film).这种钝化层是一种界面层,具有固体电解质的特征 ...

  • 【干货】浅谈索尼电视HDMI ARC输出5.1音频解决方案!

    索尼电视折腾的人还不少,近期关于HDMI ARC输出5.1音频问题有人在问,那刚好都来给大家普及下基本知识,小白用户应该会经常遇到这样的问题所以下面来看看具体是怎么解决的! 因为家里有功放和5.1音箱 ...

  • 干货 | 期货交易中概率论的应用浅谈

    只做专业交易软件 期货投资,是一门艺术,也是一门科学.普通投资者在对期货投资的认识还没有到达一定的高度之前,不妨把它当做一门科学来对待.这样在较大程度上可以避免人性弱点对期货投资的不利影响.我国近代著 ...

  • 浅谈中医医师临床用药经验要诀(纯干货,拿走不谢)

    中医临床用药心法要诀(纯干货) 用药如用兵,全在医者调配.用兵,在于知己知彼,方能百战百胜:用药,必须识药知病,才可药中病所.调配得法,效如桴鼓,调配不当,贻误病机:要领重在明药理,多实践,熟则生巧, ...

  • 干货!浅谈保险金家族信托

    2018年8月17日,中国银行保险监督管理委员会信托监督管理部发布<信托部关于加强规范资产管理业务过渡期内信托监管工作的通知>(以下简称"37号文"),通知明确了家族信 ...