请问stm32 串口库函数中,电脑发送数据,发送的数据,比如p 1,这时候我要把1放到变量中,
请问stm32串口库函数中,电脑发送数据,发送的数据,比如p1,这时候我要把1放到变量中,请问这怎么做?谁能写个例子给我行吗?谢谢,满意定采纳...
请问stm32 串口库函数中,电脑发送数据,发送的数据,比如p 1,这时候我要把1放到变量中,请问这怎么做?谁能写个例子给我行吗?谢谢,满意定采纳
展开
展开全部
中断中不要加延时,一般原则是越简洁越好,如需处理大量数据,中断也只负责收发数据到缓存,在主函数中再对缓存做处理pc端配置对了,不会不对的 115200-8-1-n我在中断服务函数里面加了些操作,接收到串口中断 点亮LED1 就可以(图1),但是加一个if判断,接收到的值等于1时LED1 亮,就没有反应(图2),不晓得为什么,请高手指点下~因为你串口收到的不是数字1,而是ASCII码的1,ASCII的1应该是0x31吧,你可以这么写'1',加个单引号,表示字符串的1恩,谢谢了!我想问下如果要发送12那怎么发?你好,我是635441467,现在登不上去百度知道。谢谢你的回答,但是你回答的,我都知道,具体的是,stm32的串口1接收的数据,如何配置,才能使其数据由串口3发送。代码也行,说说配置过程也行,或者直接操作寄存器的方式最好。你就吧串口1的数据存储到一个数组里,再通过串口3把这个数组发出去就行了啊,就是很简单的串口操作啊,网上的stm32串口例程超级多的,随便搜一个,串口1和串口3的配置基本一样的!呵呵,你这是要把串口1和串口3连到一起的,有电气连接的。我已经会了,我用的DMA传输的。谢谢通过一个超时判断判断是否后续还有数据,没有数据了才退出中断函数。还有(假设我还是每接收一个数据进一次中断)当把发送标志位的判断清除后,中断里调用发送函数后就不管了,因为是全双工通信的,是吗?如果是这样的话,那么当发送还没有完成时,接收中断又触发,再次调用发送函数了,那是出现什么情况?1)用一个while(timeout<=TIMEOUT)的循环做超时判断。接到数据则清零timeout,具体的TIMEOUT时间需要查看时序表,应该在1、2ms左右。2)串口有缓冲区的,你只要发送之前判断一下发送缓冲区是否满,如果未满则将数据发送即可。(注意不是发送寄存器的状态位)。硬件上会帮你做掉后面的事情:它会将缓冲区的值先交给发送寄存器,然后才发出去。而你在查询的标志位如果是发送寄存器的标志位,你的时间就浪费在要等它硬件“把缓冲区的值放到发送寄存器+发送出去”这两步上面。你写的这段程序是不规范的。1)0.2ms发送一个数据就是1S发送5000,如果你的波特率是9600,那你的0.2ms根本起不到任何测试作用。应该用一连串的数据通过串口工具进行发送测试。2)数据需要加校验,“接收数据+判断数据正确性+处理数据”应该在下一次数据来之前处理完毕。3)中断函数里一般只做接收,并不做数据处理。你把数据反着发送回去就是把处理放在了中断函数里。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询