每次复位后发现接收的第一个字节总是丢失,但后面的缺没问题。例如发送数据123,接收的缓冲数据长度是2 ,第一个数是2而不是1,如下图。后续再发就没有问题,如下图 void LPUART1_IRQHandler(void) { / USER CODE BEGIN LPUART1_IRQn 0 / / USER CODE BEGIN USART1_IRQn 0 / / USER CODE END USART1_IRQn 1 / / USER CODE END LPUART1_IRQn 0 / HAL_UART_IRQHandler(&hlpuart1); / USER CODE BEGIN LPUART1_IRQn 1 / if(rx_len>0)// { __HAL_UART_ENABLE_IT(&hlpuart1,UART_IT_IDLE);//使能空闲中断 if(__HAL_UART_GET_FLAG(&hlpuart1, UART_FLAG_IDLE) != RESET) //判断已经接受到一字节数据后的空闲中断 { LPUART_IDLECallBack(&hlpuart1); }
/ USER CODE END LPUART1_IRQn 1 / } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==LPUART1) {
} } void LPUART_IDLECallBack(UART_HandleTypeDef *huart) { if(huart->Instance==LPUART1) { __HAL_UART_CLEAR_IDLEFLAG(&hlpuart1);//清除空闲中断标志位,防止一直进入空闲中断影响后续数据接收 __HAL_UART_DISABLE_IT(&hlpuart1,UART_IT_IDLE); HAL_UART_Transmit(&hlpuart1, (uint8_t *)DataBuff, rx_len, 300); test1=rx_len; test=DataBuff[0]; rx_len=0; } } |
求教,STM32 LCD驱动段码屏,SEG1-SEG8,可以不连续配置吗?
DMA发送函数只能被调用一次
STM32L431进入STOP1模式后ADC产生多余功耗
STM32L431在去掉注释memcpy后会不断重启
STM32L431在STOP2模式下能否将串口的RX配置成EXTI唤醒呢?为什么我的唤醒不了呢?并且空闲中断也不能用
怎么将HAL库转为LL库。
STM32L4R9OSPI接口测试
《2024 ST工业峰会》心得分享:
免费试用|领取你的STM32G491,完成你的开发计划
ST25R3916有快速读取吗?
如果不使用空闲中断是否正常