stm8s103串口多接收到数据
大家好,我最近用stm8S103接收串口数据时,任何大小的数据包末尾的数据总是会重复接收到最后一个字节,比如我发送 01 02 03,单片机会接收到01 02 03 03,我发送01 02 03 04 05 06,单片机会接收到01 02 03 04 05 06 06。请问有没有遇到过类似问题的?我的程序关键部分如下:
时钟部分:
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV2);
串口初始化部分:
UART1_DeInit();
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_RX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
串口中断部分:
u8 x, ch;
UART1_ClearITPendingBit(UART1_IT_RXNE);
x =UART1->SR;
ch =UART1->DR;
//test_counter++;
GPIO_WriteReverse(GPIOA, GPIO_PIN_3);
if (RxCounter == 0)
{
if (ch == 0x55)
{
RxBuffer = ch;
RxCounter = 1;
}
else
{
RxCounter = 0;
}
}
else
{
.
.
.
}
波特率。。。。 数码小叶 发表于 2015-4-1 10:36
波特率。。。。
你好,你的意思是波特率需要自己再调整一下吗?固件库设置出来的可能有偏差? 于平 发表于 2015-4-1 10:40
你好,你的意思是波特率需要自己再调整一下吗?固件库设置出来的可能有偏差? ...
我的意思是说,你设置的波特率和软件之间是否一样 数码小叶 发表于 2015-4-1 11:13
我的意思是说,你设置的波特率和软件之间是否一样
波特率是一样的,上位机发送的数据格式与单片机也一样! 于平 发表于 2015-4-1 11:16
波特率是一样的,上位机发送的数据格式与单片机也一样!
难道是哪块计数出错了 // 接收数据寄存器非空或溢出错误中断 ?
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
应该用
UART1_ITConfig(UART1_IT_RXNE, ENABLE); 小槑槑 发表于 2015-4-5 18:47
// 接收数据寄存器非空或溢出错误中断 ?
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
应该用
你好,这个地方我之前也这样改过,也是不行,问题还是存在啊! 发送和中断无关,或者你对比一下我的代码:
cUART1::cUART1(uint32_t BaudRate)
{
// 波特率 数据位:8停止位:1无检验位
UART1_Init(BaudRate, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO,UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);
// 中断类型设置:接收和发送中断类型使能
UART1_ITConfig(UART1_IT_RXNE, ENABLE);
// 中断使能
UART1_Cmd(ENABLE);
}
void cUART1::SendByte(uint8_t c)
{
UART1_SendData8(c);
while (RESET == UART1_GetFlagStatus(UART1_FLAG_TXE));
}
页:
[1]