• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F103 USART发送数据SR寄存器中TXE和TC标志位都不置位

有花堪折 2019-08-12 浏览量:1990
STM32F103 USART发送数据本来设置为无校验,数据发送一直没问题,现在需要设置为偶校验,结果把寄存器配置为偶校验后,开机第一次向DR寄存器写入数据时TXE和TC标志位都在置位状态,写入第一个字节数据后,两个标志位就都变为0了,再也不置位了,请问各位大佬这到底是是什么原因啊,我觉得是数据一直没发出去,但是不知道怎么解决,求大佬们教教我。

这是发送代码
ENUM_DEVICE_ERROR PAL_RS485WriteByte(struct dal_port_type* typeuint8 byte)
{
        uint32 index;
        delayTime = RS485_Send_Delay_Count;
        OSSchedLock();
        RS485_Send_En;
        while (!(UART4->SR & USART_FLAG_TXE));
                   UART4->DR = (byte & (uint16_t)0x01FF);

        for(index = 0; index < delayTime;index++);
        RS485_Rev_En;
        OSSchedUnlock();
        return DEVICE_OK;

}

在While循环里一直出不去了

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:1
  • 应该是控制寄存器的 UEN或者TXEN位没有开起来,也有可能是U4时钟没打开,调试监控看下对应的寄存器位。

相关问题

问题达人换一批

STM32F103 USART发送数据SR寄存器中TXE和TC标志位都不置位