MC9S08DZ60移植ucos小记
2021-04-19 来源:eefocus
移植之前一直看了任哲老师的那本书,学习了很多,自我感觉有点基础之后,上手移植,本篇只作为一个新手对ucos在MC9S08DZ60移植的理解。
首先,我的底层是从CSDN网站下载的,百度一下,就会和MC9S12XEP100一起出来。下载之后,由于本人对dz60的内核知识还不是很熟悉,按照自己对ucos的理解,移植之后,出现了很多问题,大致包括两种现象:1、系统在空闲任务里面打转,调度不了;2、系统执行一边我自己建立的任务之后,就无法再进行调度,一直在OSTimeTick()函数里面。
下面主要说一下,我是如何解决这种问题或者说其实是自己理解上的错误。
MC9S08DZ60调度任务,是通过,当中断产生之后,SP指针会指向目前最高优先级任务的起始地址,中断返回后,从最高优先级任务的起始地址开始执行,完成任务调度,这个是通过swi软中断指令实现的,具体调度函数,OSStartHighRdy(),在OS_CPU_A.ASM中通过汇编编写的。中断号为1,中断函数的入口在Project.prm底部设置。
VECTOR 1 OSCtxSw /*swi 软件中断*///
定时任务设置定时器中断,中断时间可以设置位2ms,运行滴答函数OSTickISR()这个中断函数的入口在Project.prm底部设置
VECTOR 11 OSTickISR //定时器中断,重新定义了中断号
如果用的不是定时器中断,中断号应对应的改变;
相关文章
最新器件