每次复位后发现接收的第一个字节总是丢失,但后面的缺没问题。例如发送数据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; } } |
两块SRAM分别位于不同的基地址,有什么方法可以使这两块区域SRAM当成一块使用
串口接收函数跑几天就进不去了
STM32L476 HAL_FLASHEx_Erase() 问题
SD卡格式化出错
STM32用户手册哪里下载 哪里有分类的
怎么将HAL库转为LL库。
为什么STM32L496RG第一次烧写程序后需要重新上下电才能正常执行程序?
ble hid
ble hid
RTC小时时间大于24小时
如果不使用空闲中断是否正常