广东手机网站建设费用,做软件app需要多少钱,做网站公司 晨旭东方,wordpress 分类表单片机在运行中死机了#xff0c;你或许只能按2下电源键#xff08;重启#xff09;或1下复位键。
这里简单说一下重启和复位#xff1a; 从RESET引脚复位#xff0c;只有MCU复位。而外设看情况#xff0c;有的可能会有MCU同步复位或者重新初始化。也有可能一些保持复位…单片机在运行中死机了你或许只能按2下电源键重启或1下复位键。
这里简单说一下重启和复位 从RESET引脚复位只有MCU复位。而外设看情况有的可能会有MCU同步复位或者重新初始化。也有可能一些保持复位前的状态如果有I2C转GPIO输出亮灯复位后没有重新初始化的就保持原来的状态。 从Reset脚复位的叫硬件复位也可以通过程序复位的叫软件复位这两种都是热启动。 如果断电再打开的叫冷启动。冷启动完全可以替代热启动但热启动不一定能替代冷启动。 为了防止单片机死机跑飞可以使用看门狗属于硬件复位的范畴即Watch Dog Timer吗其本质是Timer即定时器。
看门狗的作用机制可以简单概括为
给看门狗定时器设置一个定时时间这个时间取决于你的业务代码运行的时间看门狗启动并开始计时从定时时间依次递减到0或者从0递加到定时值在主循环中先清除看门狗的计数值即喂狗然后执行我们的业务代码代码运行一次后喂狗再一次执行如果业务代码执行过程中看门狗计数值就到了设定值程序本应该在看门狗设定的时间内运行完的现在说明程序运行出问题了需要复位那么单片机就会复位。
看下面这个伪代码就可以理解
...
IDG_Init(4,500); //初始化看门狗
while(1)
{IWD_Feed(); //喂狗work(); //我们的业务代码
}
...一般情况下我们都设置喂狗时间为1s当有特别的任务需要进行检测时需要根据特定的任务进行设置喂狗时间假设有一个非常重要的进程需要及时的进行检测这里就要设置特定的时间比如100ms一次喂狗等操作。
此外由于使用看门狗出现问单片机会复位在特定的场景下你可能需要设置相应的数据保存-恢复机制。
看门狗的分类 CPU内部自带的看门狗此类看门狗一般是将一个芯片中的定时器来作为看门狗通过程序的初始化写入初值设定溢出时间并启动定时器。程序按时对定时器赋初值或复位以免被咬。这种看门狗是可以被禁用的只要停止这个定时器即可。大部分CPU都内置看门狗硬件原理可参考各芯片数据手册。 优点可以通过程序改变溢出时间可以随时禁用 缺点需要初始化如果程序在初始化、启动完成前跑飞或在禁用后跑飞看门狗就无法复位系统这样看门狗的作用就没有了系统恢复能力降低。 独立的看门狗芯片这种看门狗主要有一个用于喂狗的引脚一般与CPU的GPIO相连和一个复位引脚与系统的RESET引脚相连如果没有在一定时间内改变喂狗脚的电平复位引脚就会改变状态复位CPU。此类看门狗一上电就开始工作无法禁用。现在常用的芯片有CAT705/CAT706、IMP706等等溢出时间在1.6秒左右。 优点无须配置上电即用。无法禁用系统必须按时喂狗系统恢复能力高。 缺点无法灵活配置溢出时间无法禁用灵活性降低。 stm32的独立看门狗和窗口看门狗 独立看门狗 根据内部看门狗时钟频率装载寄存器定一个时间值比如是1000那么独立看门狗就会按照时钟频率从1000开始向下每隔一个时钟周期减1如果在减到0之前你用程序代码重新向向下计数器里面写1000喂狗那么定时器会重新从1000开始向下递减。如果在减到0的时候你还没有喂狗用新的数值覆盖计数器就会产生复位信号。窗口看门狗 根据系统时钟频率装载一个初始值到向下计数器假设还是1000并且设置一个窗口值小于装载到计数器的初始值假设是500窗口看门狗一般会定死窗口下线值是64。计数器从1000开始向下减在减到500之前1000到500间是不允许你去喂狗的一旦喂狗就会产生复位信号。只有计数器值减到上限值之后500到64才允许你去喂狗。当计数器减到下限值64到0之间如果喂狗也会产生复位信号当减到0之后自动产生复位信号。所以窗口看门狗实际上就是设置一个窗口上下限在这个范围内你才允许你去喂狗只要不在这个范围之内都会复位。区别 1窗口看门狗计时时间比独立看门狗精准 窗口看门狗使用的是系统时钟源。 2窗口看门狗严格限定喂狗时间段独立看门狗则是只要没有到时间都能喂狗。 ————————————————
参考文章https://blog.csdn.net/weibo1230123/article/details/83927007 参考文章http://t.csdn.cn/4Vwrc