你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8s103串口多接收到数据

[复制链接]
islayer 提问时间:2015-4-1 10:29 /
大家好,我最近用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[0] = ch;
            RxCounter = 1;
        }
        else
        {
            RxCounter = 0;
        }
    }
    else


    .
    .
    .

收藏 评论9 发布时间:2015-4-1 10:29

举报

9个回答
wyxy163@126.com 回答时间:2015-4-1 10:36:23
提示: 作者被禁止或删除 内容自动屏蔽
islayer 回答时间:2015-4-1 10:40:15

你好,你的意思是波特率需要自己再调整一下吗?固件库设置出来的可能有偏差?
wyxy163@126.com 回答时间:2015-4-1 11:13:11
提示: 作者被禁止或删除 内容自动屏蔽
islayer 回答时间:2015-4-1 11:16:23
数码小叶 发表于 2015-4-1 11:13
我的意思是说,你设置的波特率和软件之间是否一样

波特率是一样的,上位机发送的数据格式与单片机也一样!
wyxy163@126.com 回答时间:2015-4-1 11:19:17
提示: 作者被禁止或删除 内容自动屏蔽
拼命三郎 回答时间:2015-4-4 17:05:56
1.jpg
小槑槑 回答时间:2015-4-5 18:47:19
// 接收数据寄存器非空或溢出错误中断 ?
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
应该用
UART1_ITConfig(UART1_IT_RXNE, ENABLE);
islayer 回答时间:2015-4-7 15:20:32
小槑槑 发表于 2015-4-5 18:47
// 接收数据寄存器非空或溢出错误中断 ?
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
应该用

你好,这个地方我之前也这样改过,也是不行,问题还是存在啊!
小槑槑 回答时间:2015-4-7 20:46:59
发送和中断无关,或者你对比一下我的代码:

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));
}

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版