完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
针对复杂的嵌入式应用,MDK内部集成了由ARM开发的实时操作系统(RTOS)内核RTX,它可以帮助用户解决多时序安排、任务调度、定时等工作。值得一提的是,RTX可以无缝集成到MDK工具中,是一款需要授权的、无版税的RTOS。RTX程序采用标准C语言编写,由RVCT编译器进行编译。 使用RTX内核,首先打开Options for Target,选择Target标签,将Target标签中的Operating下拉框改为 RTX Kernel,如图1所示。
图1 Options for Target 这样,无需任何定义和声明,可以直接调用操作系统的函数。笔者通过一个实验进行说明。该实验利用RTX在Cortex-M3上实现多任务。Cortex-M3处理器是ARM首次针对低成本应用提供技术,减少使用内存,并在极小的RISC内核上提供优异的性能。此外,基于系统外设的高度集成化最佳地使用了芯片空间。RTX内核非常小,效率高,正好适用于Cortex-M3上,达到优化系统性能目的。 该实验设计了四个任务。第一个任务用来初始化其他任务,第二个任务用来不断读取AD采样的值;第三个任务用来在LCD屏上动态显示采样值;第四个任务用来根据采样值控制LED灯闪烁。程序开始运行时首先运行init任务,该任务用来初始化其他三个任务t_phase_ADC,t_phase_LCD,t_phase_LED。任务创建完毕后,三个任务都处于READY状态。在英蓓特STM103V100开发板上,旋转AD按钮,进行采样(任务2),采样的值显示在LCD屏上(任务3),同时通过采样值控制LED灯闪烁的速度(任务4)。使用操作系统OS_TID定义任务名称t_phase_ADC,t_phase_LCD ,t_phase_LED。
使用os_tsk_create创建任务t_phase_ADC,t_phase_LCD,t_phase_LED。os_tsk_delete_self删除自身任务,实行任务切换。 任务的创建和初始化是在主函数中定义的。
任务初始化完毕后,三个任务都处于就绪状态。t_phase_ADC任务用来进行采样,如果采样值在一定范围内偏差,不触发t_phase_LCD任务;如果超过偏差范围,表示AD按钮经过旋转,将新采样值存储在temp中,通过给任务t_phase_LCD 发信号,signal_func (t_phase_LCD),唤醒t_phase_LCD任务。
t_phase_LCD任务在唤醒前都处于就绪状态,通过os_evt_wait_and进行控制。执行完自身任务后,通过signal_func (t_phase_LED),将唤醒t_phase_LED任务。
t_phase_LED任务用来控制LED闪烁。
任务触发示意图如下:
通过实时内核RTX,能有效控制多任务运行,减少CPU占用时间,达到性能优化目的。 [此贴子已经被作者于2008-8-2 10:21:56编辑过]
|
|
相关推荐
1 个讨论
|
|
虚拟机下ubuntu重启后,进不来图形界面,只能在命令终端,不是因为内部不够的问题,因为已经删过内存了
1026 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-字符驱动之字符驱动框架描述
899 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之USB转网络
469 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之USB摄像头
514 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之4G
670 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-16 07:09 , Processed in 0.464276 second(s), Total 34, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191