打印
[STM32F1]

如何侦测STM32有没有在限定时间内有接受数据?

[复制链接]
1156|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mike_cow|  楼主 | 2021-12-21 08:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问,我用STM32F103做一个CAN通讯的数据处理,想实现一个功能就是:要在限定的时间内要收到另一个CAN模块发过来的数据,如果超时,我的CAN就要发一个错误报文出来,有什么好建议吗?

使用特权

评论回复
沙发
moticsoft| | 2021-12-21 12:41 | 只看该作者
定时器就可以啊

使用特权

评论回复
板凳
香水城| | 2021-12-21 13:05 | 只看该作者
按沙发所言操作就可以。

需要监控CAN信号时,开启定时器计数,如果有CAN数据过来,通过CAN中断来对定时器再次清零或设置相关标志。

使用特权

评论回复
地板
full_stack| | 2021-12-21 13:40 | 只看该作者
收到一帧数据之后定时器计时开始,当再收到时定时器清零,当定时器计数到你说的一段时间,就说明没收到数据,需要发送错误帧。

使用特权

评论回复
5
mike_cow|  楼主 | 2021-12-21 14:36 | 只看该作者
full_stack 发表于 2021-12-21 13:40
收到一帧数据之后定时器计时开始,当再收到时定时器清零,当定时器计数到你说的一段时间,就说明没收到数据 ...

如果一直没接收到数据,定时器就不会触发;查询pending的返回值为什么不能实现这个功能?
void USB_LP_CAN_RX0_IRQHandler1(void)

{

if((CAN_MessagePending(CAN1,CAN_FIFO0)==0)
{ Delay1(10000000);
can_tx1(0X29,0X11,0X00,0X00,0X00,0X00,0X00,0X00); } }

使用特权

评论回复
6
full_stack| | 2021-12-21 22:54 | 只看该作者
mike_cow 发表于 2021-12-21 14:36
如果一直没接收到数据,定时器就不会触发;查询pending的返回值为什么不能实现这个功能?
void USB_LP_CA ...

这段代码写到定时器中断里,这个CAN中断写个定时器重新计数的代码

使用特权

评论回复
7
WoodData| | 2021-12-22 08:52 | 只看该作者
开个定时器,定个时间。收到了就清除定时器,没收到,定时器超时处理。

使用特权

评论回复
8
mike_cow|  楼主 | 2021-12-22 09:55 | 只看该作者
正常是有心跳数据与其它运行数据过来,频率是1秒一次,

使用特权

评论回复
9
zyj213| | 2021-12-31 15:16 | 只看该作者
有吧,定时器配合接收中断呗

使用特权

评论回复
10
shjuturt| | 2021-12-31 16:01 | 只看该作者
定时器计时,接收中断如果到达多久之后,还没响应,就断定超时

使用特权

评论回复
11
ksjdisa| | 2021-12-31 16:29 | 只看该作者
接收数据超时好像网上有例程,你可以参考看看

使用特权

评论回复
12
ppaakala| | 2021-12-31 16:30 | 只看该作者
不会用can,话说can和串口是不是类似啊

使用特权

评论回复
13
shskaoanc| | 2021-12-31 16:58 | 只看该作者
Can的话有啥优势么

使用特权

评论回复
14
hfaouhfoa| | 2021-12-31 16:59 | 只看该作者
感觉就跟串口收数据超时一样,串口是有个串口中断的

使用特权

评论回复
评论
lihui567 2021-12-31 16:59 回复TA
原理是一样的 
15
hdahd| | 2021-12-31 17:19 | 只看该作者
Can是否有接收中断标记呢?如果有中断标记就好操作多了

使用特权

评论回复
16
qqjmjso| | 2021-12-31 17:19 | 只看该作者
没用过CAN,不敢乱说,不过肯定是要定时器计数的,剩下那个标记就是can接收标记啦

使用特权

评论回复
17
lalhdo| | 2021-12-31 17:34 | 只看该作者
你可以查查can的相关资料,看看有没有超时触发的功能

使用特权

评论回复
18
gshhkkk| | 2021-12-31 17:34 | 只看该作者
感觉就是查看CAN的接收标记,接收之后就清零,没接收到的话就自己做个超时处理

使用特权

评论回复
19
zljiu| | 2022-1-10 14:34 | 只看该作者
自己开启一个定时器就可以

使用特权

评论回复
20
coshi| | 2022-1-10 14:36 | 只看该作者
can本身应该没有超时发送的功能吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

11

帖子

1

粉丝