初始化USART中调用HAL_USART_Receive_IT(&USART1_Handle, rxBufIT, 1)开启接收中断,然后程序一运行到这个函数后,就会在串口助手接收到个0xFF。后面进入这个函数发现有一句: /* Send dummy byte in order to generate the clock for the slave to send data */ husart->Instance->DR = (DUMMY_DATA & (uint16_t)0x01FFU); //#define DUMMY_DATA 0xFFFFU 是的,这个0xFF果然是HAL库发出来的。 如果调用HAL_USART_Receive_IT(&USART1_Handle, rxBufIT, 10),那么中断中也会通过USART_Receive_IT()同样发出10个0xFF。 然后在HAL_USART_RxCpltCallback()中会接收到0x7F(不知从何而来),调用HAL_USART_Transmit()发送,函数返回HAL_OK,但是串口助手收不到任何数据。 请问HAL库中为什么要专门发0XFF?是BUG吗?又不走同步模式,产生时钟干什么? |