本帖最后由 chao超 于 2018-12-12 13:46 编辑
//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
OS_ERR err;
u8 i;
// CPU_SR_ALLOC();
// OS_CRITICAL_ENTER(); //进入临界区
OSIntEnter();
delay_ms(200); //消抖
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err); //延时1s 个人认为应该不会任务切换觉得是中断优先级太高
OSSemPend(&SYNC_SEM,0,OS_OPT_PEND_BLOCKING,0,&err); //请求信号量 还有就是中断尽量不要使用请求信号量会引起堵塞能不能解释一下
if(PF0==0)
{
printf("1111");
OSSemPost(&SYNC_SEM,OS_OPT_POST_1,&err);//发送信号量
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
// OS_CRITICAL_EXIT(); //退出临界区
OSIntExit(); //退出中断
希望有大神解决问题
|