完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
从串口调试助手向开发板发送一个数据0x55,再将接收到的数据发送出去。
串口中断服务函数如下: if( USART_GetiTStatus(USART_CHANNEL, USART_IT_RXNE) != RESET ) {gg_rs232_recv_buf[gg_recv_index]=(T_U8)USART_ReceiveData(USART_CHANNEL); USART_SendData(USART_CHANNEL, gg_rs232_recv_buf[gg_recv_index]); gg_recv_index++; } 在Debug模式下,在接收的缓存中gg_rs232_recv_buf[]收到的是0x30(即只有第一个字符被接收到了),如图1所示: 从串口发送出来的也是0x30,如图2所示: 然而在连续运行的时候,发送的0x55,接收之后,然后可以通过串口正常地发送出来,如图3所示: 为什么在Debug的时候不正常呢?没找出原因,求大神指点! |
|
相关推荐
9个回答
|
|
|
本帖最后由 creep 于 2015-6-21 21:27 编辑
道理很简单,你要发送十六进制就要选中HEX发送,如果不选择的话就会以ASCII发送‘0’,‘x’,'5','5',因为你又是中断模式下的dubug,所以第一次中断只能接收第一个字符‘0’,即使0x30,非dibug模式下肯定会把4个字符接收完成的所以看上去是对的。如果debug模式下全速运行得到的结果也是应该是对的。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
谢谢分享
|
|
|
|
|
|
谢谢分享!!
|
|
|
|
|
亲爱的娜娜 发表于 2018-9-30 16:59 学习了,哈哈哈 |
|
|
|
|
|
学习了
|
|
|
|
|
|
学习了
|
|
|
|
|
亲爱的娜娜 发表于 2018-9-30 16:59 分析得很透彻 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:19 , Processed in 2.081881 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5955