抱歉没有仔细看波形,比对了发送端跟接收端的波形,发现是一致的,所以可能还是哪里设定有问题,附上代码,请帮忙参考,感谢!
void STM8_Uart_Initialize(void)
{
UART2->CR1 &= (u8)(~0x10); //set M 0,use 8bits transfer.
UART2->CR3 |= (u8)(0x10); //set 1 stop bit.
UART2->BRR2 = (u8)(0x03); //set buad of [15..12]&&[3..0] used for 16M baud as 9600
UART2->BRR1 = (u8)(0x68); //set buad of [11..4]
UART2->CR2 |= (u8)(0x2C); //enable transfer and receiver flag.
UART2->CR1 &= (u8)(~0x20); //enable uart communicate.
}
void STM8_Uart_SendByte(u8 bData)
{
while(!(UART2->SR & 0X80))
;
UART2->DR = bData;
}
u8 STM8_Uart_ReceiveByte(void) //中断接收,就是这个步骤读到的数据异常。
{
u8 bReceiveData = 0;
if(UART2->SR & 0x20)
{
bReceiveData = UART2->DR;
}
return bReceiveData;
} |