请教下ucos-III 中断保护放在中断回调函数还是中断里面? 1. 中断函数 void DMA2_Stream6_IRQHandler(void) { OS_ERR err; #if USE_OS == 1 CPU_SR_ALLOC(); CPU_CRITICAL_ENTER(); OSIntEnter(); CPU_CRITICAL_EXIT(); #endif .... ..... #if USE_OS == 1 OSIntExit(); #endif } ******************************************************************************************** 2. 中断回调函数 static void MP3_DMATxCallback(void) { OS_ERR err; #if USE_OS == 1 CPU_SR_ALLOC(); CPU_CRITICAL_ENTER(); OSIntEnter(); CPU_CRITICAL_EXIT(); #endif .... ..... #if USE_OS == 1 OSIntExit(); #endif } |
一般来讲,中断回调函数往往是中断服务程序的一部分。
所以,关于这个临界区的保护,到底覆盖多宽范围你自己来定,比如你在做相关回调处理时不关注是否会被OS打断,那该回调处理就放在临界保护区之外。