历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2019年04月23日 | STM32的独立看门狗(IWDG)

2019-04-23 来源:eefocus

一、什么是看门狗:     看门狗就是一种专用定时器。


二、看门狗的功能:    


        在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。


        简单来说就是在系统跑飞(程序异常执行)的情况时,系统复位,程序重新执行。


------------------------------------------------------------------------------------------------------------------------------------------


三、独立看门狗(IWDG)


        1、独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它仍有效。


              独立看门狗适合应用于需要看门狗作为一个在主程序之外能够完全独立工作,并且对时间精度要求低的场合。


        2、独立看门狗的功能


        在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。


        无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。


        如果程序异常,就无法正常喂狗,从而系统复位。


        3、独立看门狗寄存器

①键值寄存器IWDG_KR:0~15位有效


②预分频寄存器IWDG_PR:0~2位有效。具有写保护功能,要操作先取消写保护


③重装载寄存器IWDG_RLR:0~11位有效。具有写保护功能,要操作先取消写保护

④状态寄存器IWDG_SR:0~1位有效

         4、独立看门狗超时时间

(适用M4)


溢出时间计算:Tout=((4×2^prer) ×rlr) /32 (M4)


             即是:最长超时时间= (IWDG_RLR寄存器最大值)X看门狗时钟周期


注意:M4的时钟频率LSI=32K, 一个看门狗时钟周期就是最短超时时间。


 


                 5、独立看门狗操作步骤


                ①取消寄存器写保护:


void IWDG_WriteAccessCmd(uint16_tIWDG_WriteAccess);//取消写保护:0x5555使能


                ②  设置独立看门狗的预分频系数,确定时钟:


void IWDG_SetPrescaler(uint8_tIWDG_Prescaler);//设置预分频系数:写PR


                ③ 设置看门狗重装载值,确定溢出时间:


void IWDG_SetReload(uint16_tReload);//设置重装载值:写RLR


                ④ 使能看门狗


void IWDG_Enable(void);//使能看门狗:写0xCCCC到KR


                ⑤ 应用程序喂狗:


void IWDG_ReloadCounter(void);//喂狗:写0xAAAA到KR


最后:FlagStatusIWDG_GetFlagStatus(uint16_tIWDG_FLAG);//状态:重装载/预分频 更新


-----------------------------------------------------------------------------------------------------------------------------


            6、代码如下:


void IWDG_Init(u8 prer,u16 rlr)

{

    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写

    IWDG_SetPrescaler(prer); //设置IWDG分频系数

    IWDG_SetReload(rlr);   //设置IWDG装载值

    IWDG_ReloadCounter(); //reload //重载看门狗计数值

    IWDG_Enable();       //使能看门狗

}

 

 

int main(void)

    delay_init(168);  //初始化延时函数

    LED_Init();     //初始化LED端口

    KEY_Init();   //初始化按键

    delay_ms(100);    //延时100ms 

    IWDG_Init(4,500); //与分频数为64,重载值为500,溢出时间为1s

 

    LED0=0;  //先点亮灯

    while(1)

    {

        if(KEY_Scan(0)==WKUP_PRES)//如果WK_UP按下,则喂狗

        {

            IWDG_ReloadCounter(); //喂独立看门狗

        }

        delay_ms(10);

    }

}

 

//检查系统是否已经从独立看门狗复位恢复:只需要几十ms

if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)

{

    printf("IWDG RESET OK!rn");

    PFout(8) = ~PFout(8);

}

   

推荐阅读

史海拾趣

First Sensor公司的发展小趣事

First Sensor公司电子行业的五个发展故事

故事一:初创与崛起

First Sensor的故事始于上世纪90年代初,当时它作为Silicon Sensor GmbH成立,标志着东德转型后科技领域的一次勇敢尝试。公司由Bernd Kriegel博士与21位前VEB电视电子元件厂员工共同创立,初期面临资金、机器和客户短缺的困境。然而,凭借着对传感器技术的坚定信念和专业知识,公司迅速在光子学、压力和先进电子领域开发出标准传感器和客户特定传感器解决方案。到1999年,公司成功上市,通过募集的资本进一步加速了其从初创企业向中型企业的过渡。

故事二:技术创新与市场拓展

进入21世纪后,First Sensor持续加大在技术创新和市场拓展上的投入。公司不仅专注于传感器技术的研发,还致力于提供从芯片到系统的完整解决方案。这一策略使得First Sensor在工业自动化、医疗设备和交通运输等多个领域取得了显著成就。特别是在医疗领域,公司开发的传感器广泛应用于呼吸机、血压计等关键设备中,并通过了EN ISO 13485认证,确保了产品的可靠性和安全性。

故事三:全球化战略与并购成长

随着业务的不断扩展,First Sensor开始实施全球化战略。公司在全球范围内设立了多个分支机构,生产和销售网络覆盖了全球多个市场。此外,公司还通过一系列并购活动进一步壮大了自身实力。例如,在2011年,First Sensor股份公司收购了Sensortechnics集团及其在德国境内外的子公司,这一举措不仅扩大了销售部门,还使公司能够为客户提供更加全面的个性化解决方案。

故事四:与TE Connectivity的合并

2019年,First Sensor迎来了一个重要转折点,即被TE Connectivity(泰科电子)收购。这一交易不仅巩固了TE在传感器领域的全球领导地位,还为First Sensor提供了更广阔的市场和技术资源。合并后,First Sensor的产品和客户群与TE的传感器产品组合相结合,为客户提供了更全面的一体化传感器解决方案。两家公司的互补技术和工程专业知识的结合,进一步推动了工业、医疗和交通运输市场的战略部署。

故事五:持续研发与未来展望

作为一家高科技企业,First Sensor始终将研发视为未来发展的核心。公司不断投资研发项目,推动传感器技术的进步和应用领域的拓展。例如,在自动驾驶和物联网等新兴领域,First Sensor的传感器技术发挥着重要作用。未来,公司将继续聚焦于具有技术特色的工业、医疗和交通等目标市场,紧跟行业发展趋势,为客户提供更加卓越的产品和服务。同时,First Sensor也将持续扩展全球版图,更加贴近市场与客户,以确保把握更多的销售潜力。

普芯达电子(Chipswinner)公司的发展小趣事

普芯达电子自创立之初,就立志成为国产高品质、高性价比的IC产品供应商。在成立初期,公司面临着资金紧张、技术积累不足以及市场竞争激烈等多重挑战。然而,凭借着创始人对集成电路行业的深厚理解和坚定信念,普芯达电子逐步克服了这些困难,通过引进优秀人才、加大研发投入以及不断优化产品质量,逐渐在市场上崭露头角。

Aleph America Corporation公司的发展小趣事

普芯达电子自创立之初,就立志成为国产高品质、高性价比的IC产品供应商。在成立初期,公司面临着资金紧张、技术积累不足以及市场竞争激烈等多重挑战。然而,凭借着创始人对集成电路行业的深厚理解和坚定信念,普芯达电子逐步克服了这些困难,通过引进优秀人才、加大研发投入以及不断优化产品质量,逐渐在市场上崭露头角。

Anvo-Systems公司的发展小趣事

Anvo-Systems深知人才是企业发展的核心动力。因此,公司一直注重与高校和研究机构的合作,共同开展电子技术的研发与创新。通过与高校合作开展科研项目、设立奖学金等方式,Anvo-Systems吸引了大批优秀的人才加入公司。同时,公司还建立了完善的培训体系,为员工的职业发展提供了有力支持。这些举措不仅提升了公司的研发实力,也为公司的未来发展储备了丰富的人才资源。

Bogen Communications Inc公司的发展小趣事

随着电子行业的快速发展和变革,Bogen Communications Inc公司面临着巨大的挑战。为了应对这些变革,公司不断调整战略、优化组织结构、提升研发能力。同时,公司还密切关注行业动态和市场需求,及时调整产品方向和市场策略。通过这些努力,公司成功地适应了行业变革,保持了稳健的发展态势。

峰岹(Fortior Tech )公司的发展小趣事

在电子行业的激烈竞争中,Bogen Communications Inc公司凭借一项革命性的技术创新,迅速崭露头角。该公司研发出一种新型的音频处理芯片,极大地提升了通信设备的音质和性能。这一创新不仅赢得了市场的广泛认可,还为公司带来了大量的订单和合作伙伴。随着技术的不断完善和市场的扩大,Bogen Communications Inc逐渐成为了音频通信领域的领导者。

问答坊 | AI 解惑

PIC错误标志区别???

CPU:PIC16F946 flash:8K字        当我用到资源的75%左右的时候出现了一些莫名其妙的问题,程序总会停在一个地方,像是一个死机,当删除一些调用子程序的代码时就会正常.怀疑是硬件堆栈溢出,可又不知道怎么解决,只是怀疑.后我 ...…

查看全部问答>

能把万能冲改来充1。2V的电池不

万能充改充镍氢电1.2V的2节 很多万能充都是坏了高压部分后面没问题, 不知道能不能改成冲2节1。2V的冲好停…

查看全部问答>

WinCE调用com前,如何注册

在pocketpc环境下程序,调用com组件中的方法,出现错误提示如下 “其他信息: 由于以下错误: 类未注册 ,无法创建 CLSID 为“{AFE1C22D-0A0F-4CAE-87D4-22B52720FBF3}”的 COM 对象。” 如何解决。 …

查看全部问答>

高手请指教下

有些收音机的参数请坛里的高手来解释下请尽量能详细些,谢谢频率范围中频噪限灵敏度锁台灵敏度信噪比 镜像抑制单信号择性自动增益控制 中频抑制电压谐波失真调幅抑制…

查看全部问答>

GPS/gprs 模块一般输出输入问题

有人用过GPS/GPRS模块不? 一般这样的模块通信方式是怎么样的啊,有多少输入和输出,是什么信号啊b?…

查看全部问答>

求助:IAR5.30程序无法下载到flash

原来用IAR4.42A,后来芯片换成了大容量的STM32F103RET6,烧写出问题,上网查说是IAR版本低,不支持大容量的芯片。 之后就换IAR5.30,改动了__iar_program_start,linker 选项config里改成了$PROJ_DIR$\\STM32F10x_FLASH.icf 可download and deb ...…

查看全部问答>

3V电池怎么提供一个稳定的电压做比较器参考电压?

如题。电池电压会慢慢减少这样就不能保证精度了,想过LM385,好像输入3V又太低。稳压管呢精度不行。 TL431行不行?…

查看全部问答>

疑问 ~~求解

本帖最后由 paulhyde 于 2014-9-15 04:19 编辑 我们这有个IT杯msp430竞赛 我们组在竞赛前选的题目是智能小车 但是每个人心里都没底 想问一下有经验的前辈 这个方向靠谱吧?或者前辈给个方向吧!!  …

查看全部问答>

高速数据采集和传输

高速数据采集 ADC + DDR3 + GBE +PCI-E [ 本帖最后由 chenzhufly 于 2012-11-1 01:27 编辑 ]…

查看全部问答>