STM32使用USART初始化设置停止位为1,示波器实际测量是2位,是什么原因呢?请高手帮忙看看
初始化部分代码:
USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
串口发送数据部分代码:
for(i=0;i<DataLen;i++)
{
USART_SendData(USART1, DMX_buf[i]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
USART1->DR=DMX_buf[0];
while((USART1->SR&0X40)==0);
USART1->DR=DMX_buf[1];
while((USART1->SR&0X40)==0);
把停止位改为0.5位,实际测量为1.5位;真奇怪那增加的以为停止位那里来的,跟波特率也没有关系
非常感谢大神,使用TXE:发送数据寄存器空 (Transmit data register empty) ,来判断就正常了
一周热门 更多>