微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > uCOS-II在ARM移植中的中断处理

uCOS-II在ARM移植中的中断处理

时间:06-28 来源:3721RD 点击:

4 中断处理的应用示例

uCOS II要提供周期性信号源,用于实现时间延时和确认超时。节拍率应为10~100 Hz。时钟节拍源可以由专门的硬件定时器产生,以下就以IRQ中断方式产生节拍源为示例。

初始化中断控制器:
C程序
void VICInit(void) { VICIntEnClr=0xfffff; VICDefVectAddr=-(INT32U)Non_Vect_IRQ_Handler; VICVectAddr0= (INT32U)OSTickISR; VICVectCntl0= (0x20 | 0x04); VICIntEnable= 1<<4; }
定时器0中断函数:
C程序
void OSTickISR(void) { TO_IR = 0xff; OSTimeTick(); //调用OSTimeTick() VICVectAddr=0; //通知中断控制器中断结束}
当定时中断发生时调用OS_CPU_IRQ_ISR Handler(),得到OSTickISR()的地址并执行,在OSTickISR()中调用OSTimeTick()为uCOS II提供周期性信号源。

此代码在GNU工具链ARM-GCC下编译通过,并在EasyARM2100开发实验板上得到验证。

5 结束语

通过示例讲述了在uCOS II移植过程中的中断处理所需要注意的几个问题和通用方法,经笔者在GNU工具链下编译、调试,并在实验板上得到很好的验证。这种移植方案的中断函数都使用C语言编写,具有较好的移植性,有利于对不同需求的用户进行中断扩充,增强了中断嵌套时uCOS II运行的稳定性,使移植具有更好的通用性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top