中断管理-优先级管理-中断嵌套-门禁
1 中断源
中断 | 描述 | 优先级 | 抢占优先级、响应优先级 | 中断嵌套 |
TIM2_IT_Update |
心跳包 | 3 | U2:USART_IT_RXNE | |
TIM3_IT_Update |
刷卡串口3---关联 | 0 | 0 1 | |
TIM4_IT_Update |
GPRS串口2---关联 | 1 | ||
TIM5_IT_Update |
ESP32串口1---关联 | 1 | ||
TIM6_IT_Update |
继电器开门 | 0 | 0 1 | |
TIM7_IT_Update |
蜂鸣器-网络重连-发送卡号 | 3 | U2:USART_IT_RXNE | |
U2:USART_IT_RXNE |
GPRS-AT指令串口 | 1 | ||
U3:USART_IT_RXNE |
刷卡串口 |
0 | 0 1 | |
U1:USART_IT_RXN |
ESP32-AT指令串口 | 1 | ||
EXIT-line2 |
触摸按键 | 0 | 0 2 | 开门-临时密码询问 |
关键点:
(1)若在某个中断服务程序中调用AT指令发送API,则要确保该中断优先级要低于U2及其关联定时器的中断优先级。(这里的优先级高低不是值的高低,是逻辑上优先级的高低)
(2)开门中断TIM6、刷卡响应U3的优先级要高,要高于U2。
(3)确保在网络重连等情况时,若有本地刷卡,先响应刷卡结果,开了门之后再返回网络重连任务。
刷卡时序:U3->U3对应定时器-》卡号比较-》任务1:开门TIM6-》任务2:发送刷卡记录-U2
与网络通讯,上发数据相关的任务可能会出现比较耗时的情况,不要在关键事务中断函数中指令,应另开个低优先级中断入口去执行该任务。
调用AT指令的任务有:
(1)解析完json执行网络重连
(2)刷卡行为后上发刷卡记录
(3)定时上发心跳包数据
(4)报警记录上传
(5)上传临时密码查询