Realview MDK中实时操作系统内核RTX的使用.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:5 大小:193KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Realview MDK中实时操作系统内核RTX的使用.pdf

RealviewMDK中实时操作系统内核RTX的使用.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

深圳市英蓓特信息技术有限公司——ARM开发工具专业提供商http://www.embedinfo.comRealviewMDK中实时操作系统内核RTX的使用针对复杂的嵌入式应用,MDK内部集成了由ARM开发的实时操作系统(RTOS)内核RTX,它可以帮助用户解决多时序安排、任务调度、定时等工作。值得一提的是,RTX可以无缝集成到MDK工具中,是一款需要授权的、无版税的RTOS。RTX程序采用标准C语言编写,由RVCT编译器进行编译。使用RTX内核,首先打开OptionsforTarget,选择Target标签,将Target标签中的Operating下拉框改为RTXKernel,如图1所示。图1OptionsforTarget这样,无需任何定义和声明,可以直接调用操作系统的函数。笔者通过一个实验进行说明。该实验利用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按钮,进行采深圳总部:0755-255049512563895225532557|销售邮箱:sales.realview@embedinfo.com华北办事处:010-59713204|华东办事处:021-63089029|华中办事处:027-87399523深圳市英蓓特信息技术有限公司——ARM开发工具专业提供商http://www.embedinfo.com样(任务2),采样的值显示在LCD屏上(任务3),同时通过采样值控制LED灯闪烁的速度(任务4)。使用操作系统OS_TID定义任务名称t_phase_ADC,t_phase_LCD,t_phase_LED。OS_TIDt_phase_ADC;/*assignedtaskidoftask:2*/OS_TIDt_phase_LCD;/*assignedtaskidoftask:3*/OS_TIDt_phase_LED;/*assignedtaskidoftask:4*/使用os_tsk_create创建任务t_phase_ADC,t_phase_LCD,t_phase_LED。os_tsk_delete_self删除自身任务,实行任务切换。任务的创建和初始化是在主函数中定义的。intmain(void){SetupClock();NVIC_Configuration();SetupADC();SetupTIMER1();SetupWWDG();lcd_init();lcd_clear();lcd_print("MotorSpeedIs:");os_sys_init(init);/*InitializeRTXandstartinit*/}voidinit(void)__task{t_phase_ADC=os_tsk_create(phase_ADC,0);/*starttaskphase2*/t_phase_LCD=os_tsk_create(phase_LCD,0);/*starttaskphase3*/t_phase_LED=os_tsk_create(phase_LED,0);/*starttaskphase4*/os_tsk_delete_self();}任务初始化完毕后,三个任务都处于就绪状态。t_phase_ADC任务用来进行采样,如果采样值在一定范围内偏差,不触发t_phase_LCD任务;如果超过偏差范围,表示AD按钮经过旋转,将新采样值存储在temp中,通过给任务t_phase_LCD发信号,signal_func(t_phase_LCD),唤醒t_phase_LCD任务。voidphase_ADC(void)__task{深圳总部:0755-255049512563895225532557|销售邮箱:sales.realview@embedinfo.com华