您当前的位置:首页 > 技术风向标

μCOSII在基于Cortex-M3核的ARM处理器上的移植

时间:2015-03-30  来源:扁平线圈电感厂家  点击:

MOVrO,#Oxfffffffd
BXr0
其中立即数#0xfffffffd包含了返回信息,用这两条指令可以使中断返回时使用任务堆栈指针PSP,返回后任务处于线程模式且使用任务堆栈指针PSP。
第三个汇编语言函数OSIntCtxSw与OSCtxSw类似。若任务执行过程中产生了中断,且中断服务程序使得一个比当前被中断的任务具有更高优先级的任务就绪时,μCOS—II内核就会在中断返回之前调用函数OSIntCtxSw。在此函数中不需要像任务级任务切换函数那样保存当前任务状态,因为当前任务已经被中断,在进入中断服务程序的时候任务状态已被保存。其源代码与函数OSctxSw中保存当前任务堆栈PSP指令以后部分相同,此处不再列出。
第4个汇编语言函数OSTickISR是系统时钟节拍的中断服务函数。处理器STM32F103VBT6中有一个专用系统时钟节拍定时器SysTick,本移植过程使用此定时器产生每100 ms一次的时钟节拍中断。此函数源代码如下


3 程序开发模式讨论
传统应用程序开发模式称为超循环模式,即通常主程序是由C语言中的for语句或while语句构成的一个无限循环,程序在此循环中检测事件的发生,从而转向不同的任务。这种程序开发模式有两个主要的不足之处。首先从程序维护和可靠性的角度来看,所有任务都需要程序开发人员来进行全局性的维护,当系统变得庞大和复杂时,任务的维护会变得非常麻烦,同时程序的可靠性也受到电感生产厂家影响。其次,从任务级响应时间来看,这个时间是不确定的,因为程序在循环体中检测事件发生的位置是固定的,但事件的发生是随机的,因此从事件发生到程序检测到事件发生这段时间也是不确定的。
在基于嵌入式操作系统的应用程序开发过程中,应用程序开发人员只需关心各个任务本身,而任务调度由操作系统代劳。以下的例子说明了基于μCOS—II嵌入式操作系统的应用程序开发模式


其中函数SysInit的作用是根据具体应用对处理器芯片进行必要的初始化,例如对系统的时钟分配以及通用输入输出端口配置。函数OSInit是μCOS—II操作系统的内核初始化程序。第一个OSTaskCreate函数创建了任务工字电感器Taskl,此任务的入口地址是Taskl,优先级是0。第二个OSTaskCreate函数创建了任务Task2,此任务的入口地址是Task2,优先级是1。函数OSTaskCrate还会将其创建的任务置于就绪态。文献叙述了函数OSTa-skCreate的各个参数的含义。函数OSStart用于启动多任务调度。OSTimeDly是μCOS—II内核提供的系统调用函数,用于延时或定电感器原理图时,这里的参数5表示延时5个时钟节拍。应用程序开发人员需要做的就是通过调用μCOS—II内核提供的任务创建函数OSTaskCreate将编写好的任务程序交给操作系统管理。
该例中在调用OSStart后,操作系统发现任务Taskl的优先级最高,于是操作系统就调度任务Taskl使其投入运行,而任务Task2暂时不能获得处理器的使用权。任务Taskl首先点亮一个LED,然后延时一段时间,当运行到OSTimeDly处时,该任务被挂起而处于等待状态,此时任务Task2成为优先级电感器生产厂家最高的就绪态任务,于是操作系统调度Task2运行。当5个时钟节拍的延时时间结束时,系统时间节拍中断服务子程序会重新大电流电感将任务Taskl置于就绪状态,此时任务Taskl再一次成为优先级最高的就绪态任务,于是操作系统保存任务Task2的状态,并恢复任务Taskl的状态使其又一次获得处理器的使用权。此后程序执行过程将重复上述步骤。可以看到,在这个例子中的现象是某个LED灯不停的闪烁。
μCOS—II操作系统内核是实时可剥夺型的,这意味着在任务执行过程中或中断服务子程序中,一旦有一个新的更高优先级的任务就绪,内核将立刻调度此新任务运行,这说明响应任务的时间是即刻的、确定的。
综上所述,基于嵌入式操作系统的应用程序开发过程相对于以往传统应用程序开发大为简化而且任务级响应时间也得到最优化。


4 结束语
通过将移植过程中修改的μCOS—II内核代码与上述例子中的应用程序代码在μVision3集成开发环境中编辑整合后进行编译、链接并且下载到目标硬件平台进行长时间观察,发现LED不停的闪烁,说明本移植过程是成功的。

大电流电感

有没有比sg3525功耗低的片子啊?功能和它要差不多sg3525太耗电了,工作100khz自己就耗电30ma,求一款低功耗的不是双极工艺的片子。消灭零回复。。。这是要做什么电源,30ma都这么在乎,说来听听。找到一款,bicom工艺的,功能和sg3525

[开关电源]稳压电源抗瞬间冲击的能力不如线性电假设输入端有强烈的瞬间冲击,即电压在极短的时间里猛烈变大,又迅速变回去,那么开关电源的输出是不是容易跟着变,而线性电源则不会呢?假设如此,有什么对策呢?在开关电源的输出那里并联电容?看你的设计参数了,我觉得反而前者的性能比较好,前提是你的电源设计带保护电路。 以及你的瞬间电压的大小。 xyz549040622 发表于 2017-5-26 12:44看你的设计参数了,我觉得反而前者的性能比较好,前提是你的电源设计带保护电路。 以及你的瞬间电压的大小。 ..

基于UC3842的电路,请大神解惑


这个电路7管脚没有电流,输出电压从37V一直缓慢往下降,管脚6的波形也不对,请大神们帮忙看看

没看懂
R5、C4改成1k、470p,再看下波形。R6改为100mR.

注塑加工厂


上一篇高速误码测试系统中的C8051F005运用

下一篇LED光柱显示器与PLC的接口技术


  
  温馨提示
网站首页 | 产品展示 | 科技前沿 | 行业资讯
本公司专业研发、设计、生产、销售贴片电感、插件电感、功率电感、大电流电感、扁平线圈电感、一体成型电感。
专业电感生产制造商,品质优异、交期快。
在线客服
热线电话