目前PSOC系列产品的休眠样例(HAL,RTOS)都是基于注册回调的方式进行处理,包括允许休眠的检查,进入休眠准备,退出休眠准备,休眠失败回调,这4中状态。
以 https://github.com/Infineon/mtb-pdl-cat1/blob/master/drivers/source/cy_scb_uart.c
cy_en_syspm_status_t Cy_SCB_UART_DeepSleepCallback(cy_stc_syspm_callback_params_t *callbackParams, cy_en_syspm_callback_mode_t mode) 为例。
对于如何判断外部事件是否能及时响应,需要考虑:
1. 当前整个系统的回调链表的执行时间一共有多长
2. 事件响应是否能够在休眠退出回调里就执行了, 这里需要考虑这个时候有屏蔽中断函数的CriticalSection的状态。
3. 如果是中断函数处理,当前事件的中断优先级是不是足够。
综合考虑后,应该可以有结论。具体问题还是要具体分析,比如期望的响应时间是多少。
|