STM32入门——串口接收数据包(协议带帧头帧尾)的编程实现方法

作者: 金善愚分类: 野生技能协会 发布时间: 2022-12-15 23:12:55 浏览:27179 次

STM32入门——串口接收数据包(协议带帧头帧尾)的编程实现方法

hyqopen:
金老师,你好!我的串口中只能发送数据,接收不到数据。调试发现,uart初始化能进入,不能到中断程序,入口地址是正确的。

【回复】回复 @寒衣未能送情郎 : 是不是按照官方手册写的代码?官方手册中同时使能了“接收中断”和“发送中断“,USART_ITConfig(USARTy, USART_IT_RXNE, ENABLE);USART_ITConfig(USARTy, USART_IT_TXE, ENABLE);这两个中断在手册是同时执行的。我的理解是:中断函数只有一个,但中断源有多个,多个中断源使能后,程序不知道执行那个中断源!!!把其中一个中断源注释就可以。不知这样理解对不对
【回复】回复 @妄想轩梦会低头 : 你好、我也无法发送,你怎么解决的?
zhou-2022:
大神,太感激了……我是小白,被客户逼的限期🤝项目,葱0开始,看到您的视频我看到了希望

程浅衡:
可以看看正点原子的,野火的,匿名的,以及github上一些开源项目中mcu的串口通信协议, 环形队列,dma,很多方法。

【回复】能给个链接推荐一下吗大哥
柚子aries:
金老师,打扰您问下,nrf一对一收发章节您的视频里有一个uart_sendbuf函数我没有在当时的视频里看到详细代码,请问uart_sendbuf这部分您是在哪个视频里讲的,我再去看看,谢谢金老师

【回复】回复 @金善愚 :老师,我只看到了sendString和sendByte的讲解,uart_sendbuf是要自己写么
【回复】基础篇的串口介绍的视频里
【回复】回复 @金善愚 : 麻烦老师,想再问个问题,就是发送那章节里,while循环里先做判断的这个if(!NRF24L01_RxPacket(nrf24l01_buf)),这里的nrf24l01_buf和发送代码是一样的么?初始化直接定义成unsigned char nrf24l01_buf嘛?这样的话岂不是发送的buf为空呀?是不是还需要再写一个函数,从串口读需要发送的数据存成buf,再接收呀?
无数碎片寻你:
破案了,仿真一直接受不到数据,原来是那个仿真虚拟virtual termin把信号截了,看老师的51,连compim就行,然后用老师那个软件看就行了[笑哭]

【回复】反正不能想当然,要记得仿真不行试试硬件,代码问题还是啥问题,多放方调试
关洲凌:
你好金老师,我用的stm32f103zet6的串口5,串口能发送数据,但是不能接收数据接收中断也使能了,还是不能接收数据。

【回复】发送的格式不对,用16进制发送
柚子aries:
if(!RxPacket(TX_BUF)) { byte_num=TX_BUF【0】; printf("byte_num=%d\r\n",byte_num); //-224 for(i=0;i<=byte_num;i++) { RX_BUF【i】=TX_BUF【i】; } uart_sendbuf(RX_BUF,byte_num+1); } 您好,金老师,nrf借助usb转串口模块测试接收函数时,我一直接收不到数据,我打印出的byte_num值是-224,是不是就意味着TX_BUF里没数据呀?会是RxPacket函数的问题么?可以请教您这块是怎么写的么?

屁孩儿爱吃糖:
金老师,课程代码可以分享一下吗[呲牙][呲牙][打call][打call][打call]

zq攸攸:
老师太牛了,听完感觉串口通信没有那么难了,之前一直为串口发送长数据发愁,原来是先写一个发送字节的函数然后再调用这个函数,太牛了!!!

柚子aries:
金老师打扰您了,想问您个问题。nrf本身支持一对多通信,比如1对6的话,6个通道共用一个频道,那这6个通道所占用的带宽是怎么划分的呢,是均分的吗?我这块一直没找到可参考的文章能看到关于这部分的,希望金老师解答一下,谢谢您

单片机 C语言 我们都爱搞学习·第四期 协议 STM32 串口 数据包 我们都爱搞学习

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!