完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
正如标题所暗示的那样,我的UART读取功能无法正常工作。我试图从另一个设备发送5个ASCII字符,并将它们存储在缓冲区中,直到接收到'n '字符为止。我使用RX ISR来处理读取。这里是我的主()和RX ISR:我一直在论坛挖掘,并努力使这工作了很长一段时间了。我认为这与我如何处理数组/指针有关。有人有什么建议吗?谢谢。
|
|
相关推荐
18个回答
|
|
|
我想我不理解RX中断,就像我想的那样。只有当有数据可以被正确读取时,它才会产生中断?我看不出我是如何多次读取同一个字符的。而且,newResBuffer数组是我的临时变量,用于存储数据,直到我看到换行符。
|
|
|
|
|
|
如果接收的字符不等于10,则在行中读取一次:然后在行中再次读取:每行导致物理寄存器被读取。在字符串之后,您从不添加零。sScScf()假定它是。
|
|
|
|
|
|
好的,Duh。甚至没有想过在IF语句中阅读。我会做这些改变,看看我不能让它发挥作用。谢谢你的指点。
|
|
|
|
|
|
好的,所以我用你的建议修改了我的代码。这将首次正确工作,但在后续读取中,数据不会被存储。我很确定它与我如何重置我的指针有关。有什么“指针”吗?=)
|
|
|
|
|
|
当然,我不会这么做
|
|
|
|
|
|
你是对的。我仍然在看这个问题。你对我的问题有什么建议吗?
|
|
|
|
|
|
嗯,当你发现挂起的标志时,你应该只读取和存储一个字节,而不是一起等待5个字节。
|
|
|
|
|
|
你送的角色是什么?最后很有可能同时发送/r和/n,所以如果您只寻找/r,那么/n可能在下一行的开头。
|
|
|
|
|
|
这是我最新的迭代。这个方法也没有解决问题=(我以为U1RXREG的填充速度可能比我读它的速度更快,但是家族参考手册说它可以在抛出溢出错误标志之前存储4个字节。然后,它将存储一个第五字节,一旦字节被读出,就可以加载到寄存器中。我发送5字节,所以我不认为这是一个问题。
|
|
|
|
|
|
我从树莓Pi发送数据。我修改了RasPi代码,只发送5个ASCII编码的数字,没有终止字符,以测试这种可能性,但仍然没有运气。
|
|
|
|
|
|
有什么想法吗?仍在努力争取这项工作。
|
|
|
|
|
|
连接PI到终端检查它真正发送的是什么?
|
|
|
|
|
|
不幸的是,目前没有办法这么做。我会看看我能不能把东西放在一起做那件事。我现在正忙着用开关发光二极管。
|
|
|
|
|
|
我已经分析了来自我的RasPi的信号,它们是正确的。我已经改变了我的代码,以消除任何指针问题,我可能曾经有过。这是我的代码…我从RASPI发送“11111”,并使用LED检查每个接收到的字符。我的例程设置NeWRE=11111。但是,当我下一次发送“22222”时,我的例程再次设置NeeRe= 11111。我用我的示波器查看了发送的信息,并验证了信息的正确性。我尝试过清除存储阵列,尝试过额外读取接收缓冲区以消除可能存在的任何额外数据,并且检查了接收的字节,但是都没有用。问题出现在我读取Rx寄存器(rxRead=U1RXREG&0xFF)时,但是我不能找出我的错误在哪里。=(
|
|
|
|
|
|
你怎么知道变量里面有什么?你是用调试器来完成这个代码吗?这个版本永远不会脱离第一个while循环,所以第二个部分永远不会执行。(如果执行过,它将脱离main(),这在嵌入式环境中是一个很大的禁忌。)如果接收到“2”,为什么不让代码以不同的方式闪烁LED呢?
|
|
|
|
|
|
对不起,我的托架不对。它应该无限期地停留(1),然后让我重新陈述我看到的问题。我发送的第一条消息(在这种情况下是‘11111’)被接收并存储到NeRice中。但如果我接着发送一个不同的字符串(“22222”),我所能读到的就是1。如果我重新启动并发送“22222”作为我的第一条消息,那么在随后的读取中,我所能读到的就是2。当收到“2”时,我曾例行地闪烁3次,但是当我以“11111”消息开始时,它从未发生过。我想,如果我没有看到闪烁,我可以知道是否除了“1”之外还有其他东西。至于检查变量,我上次尝试调试器时遇到了问题,所以我一直依靠切换位(LED)来检查每个变量中的内容。
|
|
|
|
|
|
问题解决了。因为我得到了5字节的数据,缓冲区溢出位正在被设置。在我的IF(NeXRESFLAG)循环的结尾添加了“U1Stest.Orr=0”,现在它像预期的一样工作!!
|
|
|
|
|
|
嗯,好吧…
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:59 , Processed in 1.012401 second(s), Total 76, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1767