你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
每次复位后发现接收的第一个字节总是丢失,但后面的缺没问题。例如发送数据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; } } |
如果不使用空闲中断是否正常