基于M D K RTX的COrtex—M3多任务应用设计
RL—RTX选择Cortex上定时器1产生周期性中断,相邻中断之间的时间就是时间片的长度。在其中断塑封电感器服务程序中进行任务调度,并判断执行了延迟函数的任务的延时时间是否到。这种周期性的中断形成了RL—RTX的时钟节拍。采用Cortex—M3的处理器STM32F103VB的CPU时钟频率为72 MHz,VPBDIV分频值为4,输出的时钟频率为18 MHz。系统推荐的时间片为1~lOO ms。
使用RL—RTX,包含以下几个步骤:
第1步,由于RL—RTX集成在MDK开发套件中,在使用MDK创建工程后,需要在工程中添加RTX内核选项。选择Project→Options for Target,在Operating下拉框中选择RTX内核,使得在编译时把RL—RTX所需的库编译进去。
第2步,在嵌入式应插件电感用程序的开发中使用RL—RTX内核,须对其进行配置。复制\Keil\ARM\Startup目录下RTX_Config.c文件到工程文件夹并添加到工程中。该文件中,部分配置参数说明如表3所列。
基于Cortex—M3平台的超温报警器,可以设计3个任务并发,分别进行数据采集、数据处理和数据显示。3个任务较小,系统安排的任务栈足够使用,栈的容量以32位无符号整型定义,容量为64字。选择硬件平台片上定时器1。
DSl8820具有300 ms的更新速率,在采集数据过程中,通过多次采集取平均值,数据采集任务执行的时间为30 ms,数据处理任务执行时间为40 ms,数据显示任务执行时间为20 ms。根据公式,对响应时间的要求:t(响应时间)=N(进程数目)×q(时间片)。总体响应时间为90 ms,进程数目为3,因此时间片设置为30 ms合适。在任务OS_IDLE_DEMON()中添加休眠代码,空闲时系统休眠,降低功耗。
第3步,复制\Keil\ARM\Startup下Retarget.c文件到工程文件夹中,并添加到工程中。模压电感器
修改文件,使其包含如下内容:
该文件的目的是避免半主机方式软件中断,因为这时所有中断都由RL—R色环电感TX统一管理。半主机是用于ARM目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。它由一组已定义的SWI操作来实现。库函数调用相应的SWI(软件中断),然后调试代理程插件电感序处理SWI异常,并提供所需的与主机之间的通信。
4 应用设计
4.1 多任务应用设计
根据图1所示的最小系统框图,采用由表及里(out—side-in approach)分解应用的方法设计多任务。该应用的上下文框图如图3所示,中间的圈表示软件应用,矩形框表示应用的输入和输出设备。箭头标有具体含义名,表示输入和输出通信的流程。
根据上下文框图以及避免“资源冲突”原则,将对同一个外设的访问放在同一个设备中,无论何时切换任务,都不会对任何独立的“外设”造成影响。
将应用分解为4个任务,RL—RTX的第一个任务必须是系统任务Init Task,该任务用来初始化其他3个任务,任务创建完毕后,3个任务都处于READY状态;第2个任务t_phase_ADC Task用来读取A/D采样的数据;第3个任务t_phase_DEA Task用来处理采样的数据;第4个任务t_phase_DIS Task用来将数据送到LCD液晶屏上,显示、控制LED灯闪烁和蜂鸣器高频报警。图4显示了任务触发的流程。
定义任务:
使用os_tsk_create创建任务t_phase_ADC、t_phase_DEA、t_phase_DIS。
os_tsk_delete_self删除自身任务,实现任务切换。任务的创建和初始化是在主函数中定义的:
任务初始化完毕后,3个任务都处于就绪状态。t_phase_ADC任务用来采样,多次采样取平均值,通过给任务t_phase_DEA发信号signal_func(t_phase_DEA),唤醒t_phase_DEA任务。平面变压器厂家 | 平面电感厂家
matlab与LABVIEW调用问题如图为应用labview调用matlab脚本的程序,图片是二维矩阵,那么为什么我把matlab脚本数据类型改为2维real的时候这里连接会连接不上,我想问一下做过的同学,这个调用应该怎么处理
自动化测试在动态文档发布系统中的应用摘要:文章首先介绍了动态文档发布系统,然后为了达到保证文档保真度不因系统升级而降低的目的,提出了一种轻量级的自动化测试框架,它能够对该系统进行自动化测试。然后,根据对该自动测试框架的要求,结合对实际系
UC3842输出占空比有问题,求大神指导!上图是基于UC3842的电源原理图,开关频率198khz,输出功率10W,主输出15V;在测试时利用直流24V直接给UC3842供电,断掉馈电绕组;
在有负载的情况下,UC3842的输出PWM波形如上