中断的禁忌
中断里面不要加延时,1ms都不行
延时代码也用的是定时器,重复的中断触发,使MCU不知道相应哪一个中断,有一种原始的方法:入中断之后关中断,然后延时判断,执行,开中断(但在HAL库里面使用HAL_TIM_Base_Start_IT(&htim3);和HAL_TIM_Base_Stop_IT(&htim3);没法实现,亲测不行)
解决办法
:一般中断里面都是置标志位,然后主循环写函数
因为我需要每隔几分钟发一次短信,之前一直想用定时器中断(里面加延时)来弄,结果程序直接卡死,最终解决办法也是如红字所说,弄了一个标志位
中断(如果有中断就直接GG)执行完成之前,主循环不能运行。处于暂停状态。
偶然发现;
HAL库的HAL_Delay()和(正点的)delay_ms()是冲突的,但正是因为冲突,加入正点的延时库了之后,HAL_Delay无法使用,导致即使中断中加入正点的delay_ms()程序还是会正常运行,亲测可用
我想原因应该是两者用的是不同时钟,导致相互不影响