
求助,使用51单片机和VL6180X传感器测距,结果一直是0是什么原因,能读到ID为0xB4
在使用nucleo H7开发版 USART2发送数据测试的时候,RTS脚产生与TX脚一样的伴随波形,波形与TX脚一致
STM32G070RET6,中断优先级配置没有效果
STM32H743VIT6 HAL 串口DMA发送掉帧
STM32G474CBT6 串口通信问题
I2C从模式编程之STOP中断
使用STM32L451CEU6型号的芯片,在用usart(PA9、PA10)进行串口通信时,发送0x55在PC端可以收到正确的数据,但是发送0x80会收到0x00的数据,发送0x01会收到0x7F的数据,串口助手的配置和CubeMX上的配置参数是一样的(都是115200,8N1),请问各位这个是什么原因呀?
STM32H7,0x00000000地址的内容引发hardfault
使用HAL_UARTEx_RxEventCallback实现的uart数据接收不会被清理,一直累加
STM32调试内部flash时候,有个疑问?
您说的很好,我现在设计的这个就是串口通讯,不做别的,相当于一个串口测试工具,把需要发送和接收的数据储存在MCU里,然后通过触摸屏来发送接收数据,测试各个串口,加上了定时器,还挺好用的,以前不懂定时器,用的是延时,结果延时的时候MCU都来处理延时了,接收了数据也收不到了,所以后来开始学习定时器,感觉挺方便的,设置好定时器后,开启定时器,就可以一直扫描串口接收到的数据,如果定时器到五分钟了还没有收到数据,说明设备有问题,直接跳出扫描,根据不同的串口,设置不同的等待时间,开启不同的定时器,哈哈,已经试验成功了,现在正在测量电池的电压问题,ADC 两个电阻搞定,正在测试程序和完善界面
1、接收时MCU不处理其它事情,就是检测是否有数据到达,那就简单。发完成后,开一个计时器(timer,systick)都可以,1秒中记数一次,在接收检测函数里读一下时间做判断。
2、接收时MCU还要处理其它的事情,这个就是要在接收中断里来接收数据。发完成后,开一个5分钟的定时器,只要定时器中断触发了,说明接收超时了。如果在5分钟(中断)内接到数据,立马停止定时器。接收成功。这种就相当于异步通讯。异步处理起来相当麻烦。首先你得发送和接收一一对应,还有可能出现接收乱序的问题。如果没有OS支持,那是相当的痛苦。
评分
查看全部评分
可能我没表达清楚。
1.串口发送数据前,定时器配置好,但是未使能。
2.串口发送数据后,定时器使能,开启五分钟倒计时
3.while循环里面检查串口数据,如果:
3.1 5分钟内收到数据,则认为未超时,失能定时器,然后主循环做有应答的逻辑
3.2 5分钟后未收到数据,定时器中断被触发,修改标识超时的全局变量,失能定时器,主循环中做超时无应答的逻辑
为什么一定不能用中断呢?有其他原因吗?
因为有很多细节没有交代清楚
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
或者,你可以不用循环中等待。可以定期或不定期去查询是否接收到数据。
当然,中断也是可以的。
评分
查看全部评分
我现在设置了一个500ms的定时器,如果不管这个定时器的话,500ms就会中断一次,计数器加1,等计数器到达我需要的时间后,执行跳出循环,同时停止失能定时器,清除中断标记,如果在我规定的时间内有数据返回,显示返回的数据并失能定时器,清除中断标记。等待下一次按键发送数据,发送完数据后开启定时器
因为我接收数据是要在5分钟内的任意时刻都可以,不能用中断的,需要一直检查有没有收到数据
if(systick-a<300*1000)
{
//判断串口接收标志位
//接收数据,并处理
}
额,定时器中断后,还是会继续啊,是不是要在中断里把定时器失能啊?因为我没用过定时器,现在也是找了一个例子
大神,你说的这个太高深,我看不懂,我初学这个。。。。
嗯,我就是一直在查询接收的数据,和您说的差不多