打印
[技术问答]

M451串口接收数据不能超过18byte?

[复制链接]
749|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xaixia|  楼主 | 2017-4-13 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   用串口助手发送数据,收到完整数据后打印全部数据,数组小于18byte时全部正常接收,当数据大于18byte时,收到第18个byte就不往后接着收了,请教大家是哪里限制了接收数据?新人实在没有悬赏分数。。。谢谢各位了!
沙发
yiyigirl2014| | 2017-4-13 19:17 | 只看该作者
不知道你的接收代码是怎么样的。是不是有什么设置的限制了。

使用特权

评论回复
板凳
yiyigirl2014| | 2017-4-13 19:20 | 只看该作者
你也可以用PDMA进行接收啊,那个不用CPU参与。

使用特权

评论回复
地板
zhuotuzi| | 2017-4-13 21:01 | 只看该作者
https://bbs.21ic.com/icview-962974-1-1.html
M451系列UART0通过DMA接收数据的

使用特权

评论回复
5
xaixia|  楼主 | 2017-4-14 09:30 | 只看该作者
yiyigirl2014 发表于 2017-4-13 19:17
不知道你的接收代码是怎么样的。是不是有什么设置的限制了。

void UART1_IRQHandler(void)
{
       
   uint8_t u8InChar = 0xFF;
   uint32_t u32IntSts = UART1->INTSTS;  
   if(u32IntSts & (UART_INTEN_RDAIEN_Msk|UART_TOUT_DLY_Msk))       
         {
      while(UART_GET_RX_EMPTY(UART1) == 0)
                        {
        u8InChar = UART_READ(UART1);
                                UART_Count++;
                                printf("u8InChar[%d]\r\n",u8InChar);
      }
   }       
}
中断处理函数是这样的,设置的14个byte产生中断。谢谢了1

使用特权

评论回复
6
xaixia|  楼主 | 2017-4-14 16:29 | 只看该作者
zhuotuzi 发表于 2017-4-13 21:01
https://bbs.21ic.com/icview-962974-1-1.html
M451系列UART0通过DMA接收数据的

谢谢!看了这个例程,已经可以正常接收任意长度的数组了,还想请教一下,同时打开两路PDMA通道接收数据时有什么需要注意的吗?因为我同时开两路程序不正常工作。

使用特权

评论回复
7
玛尼玛尼哄| | 2017-4-14 19:19 | 只看该作者
厉害,这个DMA两路的,不是很清楚,可以单独发帖问一下这个问题。

使用特权

评论回复
8
天灵灵地灵灵| | 2017-4-14 20:51 | 只看该作者
学习一下,以后避免这个错误。

使用特权

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

本版积分规则

5

主题

12

帖子

0

粉丝