历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2018年12月18日 | STM32—IWDG看门狗

2018-12-18 来源:eefocus

背景:


STM32的看门狗有2个:独立看门狗IWDG和窗口看门狗WWDG本文主要介绍STM32的IWDG。


内容:


IWDG主要性能


(1)自由运行的递减计数器;


(2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作),LSI为其时钟源,STOP和SLEEP模式仍可运行;


(3)看门狗被激活后,在计数器计数至0x000的的时产生复位。


下图为看门狗的框图。

上图中,IWDG由4个寄存器控制,PR,SR,RLR和KR。下面继续分析STM32的HAL库中IWDG的使用。


IWDG_HandleTypeDef hiwdg;定义一个IWDG_HandleTypeDef类型的结构体,查看其结构体,如下


typedef struct 

  IWDG_TypeDef * Instance; / *!<寄存器基地址* / 

 

  IWDG_InitTypeDef Init; / *!

 

} IWDG_HandleTypeDef;


继续查看其内部的两个结构体,如下


typedef struct 

  __IO uint32_t KR; / *!

  __IO uint32_t PR; / *!

  __IO uint32_t RLR; / *!

  __IO uint32_t SR; / *!

} IWDG_TypeDef;

typedef struct 

  uint32_t Prescaler; / *!<选择IWDG的预分频器。

                            此参数可以是@ref的值IWDG_Prescaler * / 

 

  uint32_t Reload; / *!<指定IWDG减计数器重载值。

                            此参数必须是介于Min_Data = 0和Max_Data = 0x0FFF之间的数字* / 

 

} IWDG_InitTypeDef;


下面继续分析看门狗的初始化函数:


static void MX_IWDG_Init(void)

  hiwdg.Instance = IWDG; //传入IWDG的基地址;

  hiwdg.Init.Prescaler = IWDG_PRESCALER_32; //32预分频

  hiwdg.Init.Reload = 3000; 

  if(HAL_IWDG_Init(&hiwdg)!= HAL_OK)

  { 

    _Error_Handler(__ FILE__,__LINE__); 

  } 

}

继续查看HAL_IWDG_Init函数:


HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef * hiwdg)

  uint32_t tickstart; 

  / *检查IWDG句柄分配* / 

  if(hiwdg == NULL)

  { 

    return HAL_ERROR; 

  } 

  / *检查参数* / 

  assert_param(IS_IWDG_ALL_INSTANCE(hiwdg-> Instance)); 

  assert_param(IS_IWDG_PRESCALER(hiwdg-> Init.Prescaler)); 

  assert_param(IS_IWDG_RELOAD(hiwdg-> Init.Reload)); 

 

  / *启用IWDG。LSI开启automaticaly * / 

  __HAL_IWDG_START(hiwdg); 

 

  / *通过在KR * / 

  IWDG_ENABLE_WRITE_ACCESS(hiwdg)中写入0x5555来启用对IWDG_PR和IWDG_RLR寄存器的写入访问; 

 

  / *写入IWDG寄存器Prescaler&Reload值与* /

  hiwdg-> Instance-> PR = hiwdg-> Init.Prescaler; 

  hiwdg-> Instance-> RLR = hiwdg-> Init.Reload; 

 

  / *检查未决的标志,如果以前的更新没有完成,则返回超时* / 

  tickstart = HAL_GetTick(); 

 

  / *等待寄存器更新* / 

  while(hiwdg-> Instance-> SR!= RESET)

  { 

    if((HAL_GetTick() - tickstart)> HAL_IWDG_DEFAULT_TIMEOUT)

    { 

      return HAL_TIMEOUT; 

    } 

  } 

 / *在重装载寄存器* /定义的值重新加载IWDG计数器

  __HAL_IWDG_RELOAD_COUNTER(hiwdg); 

 

 

  / *返回函数状态* / 

  return HAL_OK; 

}


当实际程序中使用看门狗后,需要在计数时间内不停地喂狗,以防止程序重启。若程序较为复杂,也可通过开启的一个定时器来不停地喂狗,喂狗即让看门狗复位从新计数,调用 __HAL_IWDG_RELOAD_COUNTER(hiwdg)函数来喂狗。


推荐阅读

史海拾趣

Amphenol Piher公司的发展小趣事

Amphenol Piher 是 Amphenol 公司的一部分,专注于设计、制造和销售电子行业中的传感器和电位器等产品。以下是关于 Amphenol Piher 公司发展的五个相关故事:

  1. 创立与初期发展:Amphenol Piher 公司的历史可以追溯到20世纪60年代,在西班牙的Valencia成立。最初,公司主要致力于生产电位器和传感器等电子元器件,为不同行业的客户提供定制化的解决方案。随着市场需求的增长和公司技术实力的提升,Amphenol Piher 逐渐赢得了客户的信任和市场认可。

  2. 技术创新与产品多样化:Amphenol Piher 公司在技术研发方面持续投入,并不断推出新型的传感器和电位器产品。公司专注于提升产品性能、精度和可靠性,满足客户对高品质电子元器件的需求。除了传统的电位器和传感器,Amphenol Piher 还推出了一系列新型产品,如角位移传感器、线性位移传感器等,为不同应用领域提供多样化的解决方案。

  3. 客户合作与定制化解决方案:Amphenol Piher 公司与客户建立了紧密的合作关系,致力于开发定制化的传感器和电位器解决方案。公司的工程团队与客户密切合作,根据客户的需求和应用场景,设计和制造符合特定要求的产品。这种定制化解决方案能够满足客户个性化的需求,为客户提供更加专业和完善的服务。

  4. 质量控制与认证标准:Amphenol Piher 公司高度重视产品质量控制,并严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量的稳定性和可靠性。此外,Amphenol Piher 公司的产品还通过了各种行业和应用领域的认证标准,如汽车行业的TS16949认证等,确保产品符合行业标准和规定。

  5. 全球市场拓展与合作伙伴关系:除了在西班牙的生产基地外,Amphenol Piher 公司还在全球范围内设有多个销售办事处和代理商网络,拓展了国际市场份额。公司与全球各种行业领先企业建立了长期稳定的合作关系,共同推动产品的创新和市场拓展。通过全球市场拓展和合作伙伴关系,Amphenol Piher 公司不断扩大业务规模,增强了在电子行业中的市场竞争力。

这些故事展示了 Amphenol Piher 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球市场拓展与合作伙伴关系等方面取得的重要进展。

Genesis Microchip公司的发展小趣事

进入21世纪后,电子行业面临着前所未有的变革和挑战。随着信息技术的飞速发展,云计算、大数据、人工智能等新兴技术不断涌现,对传统电子企业提出了更高的要求。GI积极响应行业变革的号召,不断加大在新技术研发方面的投入,努力推动产品升级和转型。同时,公司也积极拥抱互联网思维,加强与互联网企业的合作与融合,共同探索电子行业的新未来。这一阶段的努力,使GI在激烈的市场竞争中保持了领先地位,并继续为电子行业的发展贡献着力量。

需要注意的是,以上故事是基于行业常识和通用发展路径构建的,并非直接针对GI的官方历史。由于GI的具体发展历史和详细故事可能因资料限制而无法全面呈现,因此以上内容仅供参考。

Euvis Inc公司的发展小趣事

随着公司实力的不断增强和市场需求的日益全球化,Euvis Inc公司开始实施国际化战略,积极拓展海外市场。公司在全球范围内设立研发中心和生产基地,与当地企业建立合作关系,共同开发适合当地市场的产品。通过国际化战略的实施,Euvis Inc公司成功实现了全球布局,为全球消费者提供了优质的产品和服务。

请注意,以上故事均为虚构内容,旨在为你提供一个关于电子行业公司发展起来的相关故事框架。如有需要,你可以根据这些框架进行进一步的创作和发挥。

协顺电子(Finecables)公司的发展小趣事

经过多年的发展,协顺电子已经成为中国电子连接器行业的领军企业之一。展望未来,公司将继续坚持“以顾客为中心”的经营理念,不断提升产品质量和技术水平;同时,公司也将积极探索新的业务领域和市场机会,推动公司的持续发展。此外,协顺电子还将加强与国际知名企业的合作与交流,共同推动电子行业的发展和进步。

请注意,以上故事框架仅供参考,具体的故事内容需要根据协顺电子(Finecables)公司的实际情况和发展历程进行创作和补充。

Hirect公司的发展小趣事
控制信号(如PWM信号)经过处理后,用于控制晶闸管的开关状态。
DAVE Embedded Systems公司的发展小趣事

在稳固国内市场的同时,DAVE Embedded Systems也开始积极拓展国际市场。他们参加了多个国际电子展会,与全球各地的潜在客户建立了联系。通过与国际知名企业的合作,公司成功将产品打入欧美市场,并取得了良好的销售业绩。此外,公司还加强了与国际研发机构的合作,共同开发新技术和新产品,以保持在行业中的领先地位。

问答坊 | AI 解惑

单片机在炉温控制中的应用

1 引言 单片机具有集成度高,运算快速快,体积小、运行可靠,价值低廉,因此在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到广泛应用,本文主要介绍单片机在炉温控制中的应用。 在工业生产中,有很多行业有大量的 ...…

查看全部问答>

tms320f2812的开发板

这个就是那个tms320f2812的开发板丢失的文件了,最好是认真检查一下…

查看全部问答>

请问Nand flash、SD卡和RAM区别和联系

请问Nand flash在手机上是存储什么的?相当于外存还是内存,它和RAM有什么区别和联系呢?和SD卡的联系呢? 手机中的程序比如QQ是在那个存储器里运行的呢?Nand flash 和PC机的硬盘是不是一个概念? 谢谢…

查看全部问答>

急!!!如何让我开发的WDM驱动程序在双核的机器中只运行在单核上?

我们一张PCI卡里面一块芯片的读写只支持在单核上运行,这样在双核机器上要强制让操作系统运行在单CPU模式下才可正确使用,我用的操作系统是Windows Vista. 请问我应该怎样通过编程的方式让我的驱动程序能内在的指定运行在单核上?…

查看全部问答>

高粘度液位传感器&耐压接近开关~求解决方案!

大虾们好!最近最一个产品,测试一个润滑脂的低液位报警,就是提醒要加料了! 装在直径200mm,高度75mm(这个很小)还有高度250mm的塑料桶里面。桶底有一个直流电机带动的刮板。 润滑脂粘度很大,类似于黄油,稍微稀一点,流动性很小。 用音叉肯 ...…

查看全部问答>

看了一下712的管脚的好象没有外部中断管脚

                                 看了一下712的管脚的好象没有外部中断管脚,除了710中的P2.8到P2.10是外部中断管脚。除了712中的capture,还有没有 ...…

查看全部问答>

【求助】中断函数为什么不能修改全局变量的值

定义了全局变量,在中断函数中赋值。在主程序中全局变量的值为何没有变。请各位大侠指教,不胜感激!结果是 ser=0!!!!! #include <msp430x14x.h> unsigned char a[6]; unsigned char b[6]; unsigned char n; unsigned char pt; unsigned ...…

查看全部问答>

学习电子

我学习电子其实好坎坷,以前是学机电的,班上没一个女生,学着没味,之后听说电子的多,我转过来了,感觉电子更纠结,好难,希望在这论坛跟大家共同进步…

查看全部问答>

STM32 IAP

调试基本正常,现在遇到一个问题,下载好应用程序后,跳转到应用程序,好像进入了hardfault,不跑应用程序. 下载程序后,必须重新启动单片机才一切正常,能正常跑应用程序.我想了办法,下载完程序后,打开单片机的看门狗,让单片机的看没看复位单片机,还是不 ...…

查看全部问答>

求帮助。单片机与传感器。急急急急急急急

自由选择一种传感器,设计一款检测仪表,至少包括传感器。单片机。显示及按键四个部分,并完成以下内容。 1.传感器的工作原理 2.该仪表的组成框图 3.(单片机)的开发流程 4.仪表主要构成部分及代码…

查看全部问答>