首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

LPC21XX移植UCOS-II小结 06

LPC21XX移植UCOS-II小结 06

其中的Timer0Init();用于硬件定时器0的初始化,事实上,ZLG的移植代码的μC/OS-Ⅱ的时钟节拍是
    通过定时器0提供的,不在主程序里调用这个函数,μC/OS-Ⅱ的时钟源就无法打开;但是,没有开启
    时钟源的μC/OS-Ⅱ是同样能运行的,只是内核提供的延时和等待时限机制都不起作用,系统虽能将
    就运行,但因没调用TargetInit()而使内核功能不健全。
    请注意,TargetInit()中的另一个函数VICInit ()是用来中断的初始化,它其中含有对UART0中断的
    分配,在用户程序里需要根据使用的硬件中断修改这部分代码,否则,这些硬件中断无法开启;
    再者,在不调用TargetInit()的时候,硬件的中断初始化是在硬件初始化函数中完成,
    这也就是Zgpswh提到的现象:不调用TargetInit()内核运行异常,调用了却开不了UART0的中断。
    解决的方法如下:
    这在《arm嵌入式系统基础教程》的430页7.4.3节中论述的很清楚:
    ……关键在于把程序与芯片相关中断源挂接,使芯片在产生相应的中断后会调用相应的处理程序。
    这需要做两方面事情:
    1. 增加汇编接口的支持。……
    2. 初始化向量中断控制器。……
返回列表