当我们有一个中断的优先级很高,比如说在定时中断中,我们希望去控制LED灯闪烁,闪烁的这个延时调用了HAL_Delay()函数,从上面的分析中可知,HAL_Delay()原理是基于滴答定时器的中断,去判断全局变量的值。当定时器中断执行时,因为其优先级更高,因此此时此刻,滴答定时器是无法执行的,HAL_Delay()函数就会卡在这里。
首先,我在调试的过程中是可以进入主函数的。但是当我调试进入到中断回调函数这块,发现到HAL_Delay这里...
2、尝试用HAL_Delay函数失败 发现在外部中断中使用HAL_Delay函数会卡死,只能触发一次中断,然后后面无法触发 原因 查看HAL_Delay函数 /** * @brief This function provides minimum delay (in milliseconds) based * on variable incremented. * @note In the default implementation , SysTick timer is the source...
此处不可直接回显,会卡死在中断。 voidUSER_UARTx_IRQHandler(UART_HandleTypeDef *huart){if(USART1 == huart->Instance){if(__HAL_UART_GET_FLAG((UART_HandleTypeDef *)&huart1, UART_FLAG_IDLE) ==SET) { __HAL_UART_CLEAR_IDLEFLAG((UART_HandleTypeDef*)&huart1); HAL_UART_DMAStop((UART_Han...
HAL_UART_Receive(&huart1, &tmp, 1, HAL_MAX_DELAY); 会将接收到的一个字节的数据,缓存给tmp变量,然后将tmp变量赋值给不定长数据的接收数组,并将不定长数据的长度++。 if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET){