嵌入式小知识(纯积累)

一些关于项目过程中的想法和疑问,纯笔记记录,有不同看法的可以私信或者留言回复探讨。
1.关于波特率传输数据的速率
比如说波特率如果是1200的话,一般在做数据传输的时候都会稍微计算一下传完这么多的数据需要多长时间,那就要看一下一秒钟传了多少数据。之前想的是一秒钟传输1200/8。(因为一个字节的数据8个bit)。后来工程师计算的时候一般都是除10。是因为一般数据传输之前都有起始位,后面还在终止位。所以计算的时候除10.如果有奇偶校验位的话就是除11。(如果是CAN等传输数据的时候可能不仅仅是数据位了,还有很多其他的,帧ID之类的),一般粗略计算的话除10就行,因为本身就要留点裕量。
2.看门狗与喂狗。
其实道理很简单,只是一时没想明白。首先说一下看门狗的作用,看门狗实际上就是一个定时器,百度百科上的解释再详细不过了。
在这里插入图片描述
解释一下,‘过一段时间CPU应发出指令让看门狗清零’,就是在软件里操作的。也就是说,首先看起看门狗,然后开始计数,到了设定时间就系统复位。(时间可自己设,项目里大概是10s)。,但是如果程序正常运行的话,我们自然是不希望系统隔段时间自己复位的,因此我们就需要对看门狗进行清零,也就是所谓的喂狗。如果软件跑飞了或者没执行了,那喂狗程序也就没执行了,所以看门狗到了时间就执行复位操作了。
所以,使用看门狗的时候要注意:
1.喂狗间歇不要超过看门狗溢出时间。这个简直是废话,就不做解释了。
2.尽可能的不要在中断里喂狗,因为如果程序陷入异常,但是中断还是可以执行的,所以喂狗无异于没啥意义。
3.避免多处喂狗,避免某段异常程序里恰好有喂狗程序,就无法起到喂狗的目的。
4.所以一般都是放在主函数里面喂狗。
5.那么问题来了,如果主程序都没执行了呢,那喂狗的目的呢?
6.所以针对5,也可以在中断里喂狗,然后和主程序里相互校验。
7.说了这么多,也可以看出来,喂狗没有统一的规律,都是工程经验,除了上面的1是必须遵守的,3是最好要遵守的(不然很尴尬,也显得没水平)。其他的都依情况而定。
上面只是说了单线程的系统,那如果是多线程的呢?
如果多任务的系统还是按照单任务的来进行的话,就会出现必须所有任务都挂了,看门狗才能执行复位了,单个任务挂了,其他任务里的喂狗在执行的话,还是会将看门狗清零。
解决措施:
1.建立高于所有任务的监控系统,只要有一个挂了,就不喂狗了,进入复位程序。
2.很显然没有工程师愿意去进行1的操作,所以还是佛系喂狗吧,对重点任务进行喂狗操作,不重要的任务就佛系吧。
3.等待重要信号量之前建议喂狗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值