我的uC/OS-II,我的读书笔记之中断服务示例源程序
昨天看了中断服务的示例,今天又学习了信号量的使用,于是晚上使用简单的方式进行了实现。附件里为一份IAR的工程文件,供大家参考交流。
程序建立了一个任务app_taskBlink控制LED灯的闪烁,开启了timer0的中断,每秒产生一个中断,并在中断里释放一个信号量。源代码如下所示:
void Timer0AHandler(void)
{
OSIntEnter();
OSSemPost(LedSem);
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
OSIntExit();
}
在任务里面,使用了OSSemPend函数阻塞,等待信号量的到来。源代码如下:
while(1)
{
OSSemPend(LedSem, 0, &err);
BSP_LED_On();
OSTimeDlyHMSM(0, 0, 0, 50);
BSP_LED_Off();
}
我们再来看一下调试效果图:
开发板上的小LED灯每秒闪亮一下,很是耀眼~~