打印
[技术问答]

M0518串口接收问题,请大家看看哪里不对,谢谢!

[复制链接]
1421|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RAYINGPX|  楼主 | 2019-11-17 17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
M0518用串口接收数据时出问题。发送端共发送3个字节,固定第一字节数据会改变,其它两个字节的数据一直为0,可是接收端收到的数据,第一个字节是正常的,后面的第二、三字节却是乱的,本应为0的,但是像随机一样的数据;如果固定第二个字节数据变化,第一、三字节固定为0时,则接收到的,第二个字节正常,第一、三字节又是乱的,不为0。
收发的波特率是一样的。
接收中断如下:
/* 接收中断 */
void UART02_IRQHandler(void)
{
    uint8_t  u8InChar = 0;
    uint32_t u32IntSts = UART0->ISR;
    static uint8_t rec_cnt=0;

    if(u32IntSts & UART_ISR_RDA_INT_Msk)
    {
         while(UART_IS_RX_READY(UART0))
        {                                
          u8InChar = UART_READ(UART0);                                
            /* Check if buffer full */
               rec_buf[rec_cnt] = u8InChar;
               rec_cnt++;                                                
              if(rec_cnt >= 3)
             rec_cnt = 0;
        }
    }
}
接收中断程序是在M0518串口例程上稍做修改的
接收端串口的配置如下:
void UART0_Init(void)
{               
    /* Enable peripheral clock */
    CLK_EnableModuleClock(UART0_MODULE);

  /* Peripheral clock source uart0 */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Set PB multi-function pins for UART0 RXD, TXD */
   SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
    SYS->GPB_MFP = SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
  
   /* Reset IP */
    SYS_ResetModule(UART0_RST);

    /* Configure UART0 and set UART0 Baudrate */
    UART_Open(UART0, 250000);
       
  /* Enable RDA中断 */
    UART_EnableInt(UART0, UART_IER_RDA_IEN_Msk);
       
   /* 设置中断优先级 */
  NVIC_SetPriority(UART02_IRQn, 1);
}

使用特权

评论回复
沙发
sensitivity| | 2019-11-17 17:56 | 只看该作者
有没有先确认发送端发出来的数据是不是正确的?

使用特权

评论回复
板凳
RAYINGPX|  楼主 | 2019-11-17 18:03 | 只看该作者
这个是确定的

使用特权

评论回复
地板
RAYINGPX|  楼主 | 2019-11-17 18:50 | 只看该作者
问题已经解决了

使用特权

评论回复
5
xixi2017| | 2019-11-17 22:36 | 只看该作者
啥问题,程序不完整看不出来啊

使用特权

评论回复
6
xixi2017| | 2019-11-17 22:36 | 只看该作者
其实串口的还可以软件仿真,直接在Keil里看运行结果

使用特权

评论回复
7
dongliushui| | 2019-11-17 23:52 | 只看该作者
不如发你的完整程序来。半截的看不出来。

使用特权

评论回复
8
coshi| | 2019-12-9 12:58 | 只看该作者
楼主如何解决的啊

使用特权

评论回复
9
huangcunxiake| | 2019-12-9 17:00 | 只看该作者
也不分享一下原因。

使用特权

评论回复
10
小明的同学| | 2019-12-9 22:15 | 只看该作者
自己没配置对吧

使用特权

评论回复
11
antusheng| | 2019-12-11 21:11 | 只看该作者
1个字节一个字节的排查

使用特权

评论回复
12
flycamelaaa| | 2022-3-16 10:19 | 只看该作者

建议用示波器抓取串口上的波形去分析,怀疑还是发送端发来的数据就有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

127

帖子

0

粉丝