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运行的稳定性,使移植具有更好的通用性。
- LPC2292的伪中断与伪中断处理(03-25)
- Linux同步机制自旋锁原理及其应用(03-05)
- 除法中断处理程序-asm(12-01)
- 异常中断处理程序(11-21)
- ARM Linux外部中断处理过程(11-20)
- ARM中断处理及状态机嵌套实现(11-19)