STM32L431在去掉注释memcpy后会不断重启
STM32F4的串口在配置DMA之后,不能使用高波特率吗?
用stm32cubeide上传串口通信代码之后,st-link红灯一直亮,再想下载的时候显示Target no device found
stm32f103USART2无法收发信息
请问为什么自己加了stdio.h,sprintf还是用不了?
串口重定向为什么printf不能打印到串口上
STM32H7串口智能卡模式
STM32F103做从站 上电过程,上位机不断发送数据造成,通讯失败,请大侠指导一下
蓝牙串口接受18位数据(包含包头1、包尾1、校验1)错位
STM32H747I-DISCO开发板无法连接芯片
您说的很好,我现在设计的这个就是串口通讯,不做别的,相当于一个串口测试工具,把需要发送和接收的数据储存在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)
{
//判断串口接收标志位
//接收数据,并处理
}
额,定时器中断后,还是会继续啊,是不是要在中断里把定时器失能啊?因为我没用过定时器,现在也是找了一个例子
大神,你说的这个太高深,我看不懂,我初学这个。。。。
嗯,我就是一直在查询接收的数据,和您说的差不多