STM32
登录
直播中
何圆
7年用户
168经验值
私信
关注
[问答]
串口发送的候为什么数组中最后两个CRC校验码不能发送出去
开启该帖子的消息推送
串口
下面是串口发送的其中一部分代码:
case 0x11 :
while(mm--);
for(i = 0 ; i < 8 ; i++)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
USART_SendData(USART1 , Message.Data_SetADDR_HEX
);
}
break;
case 0x12 :
while(mm--);
for(i = 0 ; i < 8 ; i++)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
USART_SendData(USART1 , Message.Data_ReadADDR_HEX
);
}
break;
case 0x21 :
while(mm--);
for(i = 0 ; i < 11 ; i++)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
USART_SendData(USART1 , Message.Data_SetRangeVLD_HEX
);
}
break;
发送的时候知道为什么数组中最后两个CRC校验码不能发送出去,但是单步执行的时候可以发送出去,若全速运行则只能收到前8个字节,最后两个CRC校验码收不到,但在MDK中确实看到数组中是有CRC校验码的,我在for循环发送前面加一个断点,再全速运行,最后两个字节可以收到;在for循环后的break处加一个断点,也可以接收到最后两个字节,后来我在for循环发送前面加了一点延时,但是还是不行,最后两个字节收不到,真是奇怪,老是长不到原因。
还有一个蛮奇怪的问题,我在单步执行的时候,一个case执行完了后,它跳到case 0x11 :那条语句的break处,再跳出switch case语句,比如我进入switch中的case 0x21:中,单步运行到了case 0x21 :中的break后,再下一步就跳到case 0x11 :中的break处,再下一步跳出整个switch case,真是很奇怪,程序运行到case 0x21的break处时,再下一步不应该是直接跳出整个switch case吗,但是实际确不是,感觉好奇怪呃,请原子哥和大家看看是什么原因呃,解答一下。。。。。
回帖
(1)
齐镭
2019-6-19 06:52:43
第一个问题,描述不清.代码断章取义,我表示看不懂.
第二个问题.break语句是会有这样的情况,原因我也不太明白.
第一个问题,描述不清.代码断章取义,我表示看不懂.
第二个问题.break语句是会有这样的情况,原因我也不太明白.
举报
更多回帖
rotate(-90deg);
回复
相关问答
串口
如何将一
个
浮点型的数通过
串口
发送出去
?
2021-11-22
1833
串口
通讯 波特率设置的大小对
CRC
校验码
的影响
2018-12-18
3032
如何将printf()函数的数据用STM32的
串口
发送出去
呢
2021-12-01
666
请问怎样把dht11采集到的温度值通过24l01
发送出去
啊???
2020-06-10
996
单片机遥控伺服电机的RC电压为什么无法
发送出去
2021-09-30
1483
CRC
16的计算
校验码
的方式有哪几种?
2021-11-03
2554
51单片1602温度显示
串口
发送
温度,为什么温度
发送
不
出去
2014-06-19
2302
求教
串口
发送
问题
2017-02-15
2601
求基于LABVIEW编程的
CRC
16/X25
校验码
校验
程序
2022-02-24
17807
串口
发送
数据接收到的都是00
2020-04-02
9553
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分