硬件清单
如果直接在中断服务函数中调用HAL_Delay 函数,则会造成系统卡死。
原因:程序初始化时默认把滴答定时器的中断优先级设为最低,其它中断源很容易打断它导致卡死。 解决:在 main 函数里使用以下函数提高滴答定时器的中断优先级(提升至0)
HAL_NVIC_SetPriority(SysTick_IRQn,0,0);
并且将 EXTI4 的中断优先级设置比滴答定时器的中断优先级高,比如 2 。
main.c中的中断服务函数,注意设立模式标志位,按键a按下,设立为警报模式,按键b按下关闭警报模式,在警报模式下并且震动传感器摇晃(摇晃电瓶被拉低),继电器导通(电瓶拉低导通),标志位定义位静态变量。