历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2020年03月10日 | STM32开发笔记77: 内部看门狗长延时的产生

2020-03-10 来源:eefocus

单片机型号:STM32L053R8T6


开发笔记STM32开发笔记45:看门狗驱动程序的移植介绍了看门狗驱动程序的基本设计方法。今天项目中看门狗的延时时间达到10秒,则实际运行效果只有3秒。


以下是看门狗最大延时时间的设置函数:


void CIwdg::SetMaxRefreshInterval(uint8_t u8_second)

{

this->hIwdg.Instance = IWDG;

  this->hIwdg.Init.Prescaler = IWDG_PRESCALER_64;

  this->hIwdg.Init.Window = 4095;

#if defined STM32F091xC || defined STM32F070x6

  this->hIwdg.Init.Reload = 625 * u8_second; //40000000 / 1000 / 64 * 5 = 3125

#elif defined STM32L053xx

this->hIwdg.Init.Reload = 578 * u8_second; //37000000 / 1000 / 64 * 5 = 2890

#endif

  if (HAL_IWDG_Init(&this->hIwdg) != HAL_OK)

  {

    Target.ErrorHandler(__FILE__, __LINE__);

  }

}


以当前使用的STM32L053R8T6为例,如果希望产生10秒延时则设置的值为37000000/1000/64*10=5780。


看下面的程序,这是STM32底层的看门狗驱动,其Reload的最大值为0x0FFF,也就是4095。这就是为什么达不到10秒延时的原因,因为其设置的值已经溢出。


typedef struct

{

  uint32_t Prescaler;  /*!< Select the prescaler of the IWDG.

                            This parameter can be a value of @ref IWDG_Prescaler */

 

  uint32_t Reload;     /*!< Specifies the IWDG down-counter reload value.

                            This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */

 

  uint32_t Window;     /*!< Specifies the window value to be compared to the down-counter.

                            This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */

 

} IWDG_InitTypeDef;


可以通过增加分频系数的方式,加以解决,当然前提是不需要看门狗的实践过于精准,一般来说也不需要过于精准的看门狗时间。


以下是修正后的程序,再设置10秒延时已非常准确。


void CIwdg::SetMaxRefreshInterval(uint8_t u8_second)

{

this->hIwdg.Instance = IWDG;

  this->hIwdg.Init.Prescaler = IWDG_PRESCALER_256;

  this->hIwdg.Init.Window = 4095;

#if defined STM32F091xC || defined STM32F070x6

  this->hIwdg.Init.Reload = 156 * u8_second; //40000000 / 1000 / 256 = 156

#elif defined STM32L053xx

this->hIwdg.Init.Reload = 145 * u8_second; //37000000 / 1000 / 256 = 145

#endif

  if (HAL_IWDG_Init(&this->hIwdg) != HAL_OK)

  {

    Target.ErrorHandler(__FILE__, __LINE__);

  }

}


这样设置后,对于STM32F0来说,其最大延时时间约为26秒;对于STM32L0来说,其最大延时时间约为28秒。

推荐阅读

史海拾趣

巨盛电子(Chesen)公司的发展小趣事

巨盛电子(Chesen)自创立之初,就坚持将技术创新作为公司的核心竞争力。在电子行业迅速发展的背景下,公司投入大量资源进行研发,成功推出了一系列具有领先技术水平的电子产品。这些产品不仅满足了市场对于高品质、高性能电子产品的需求,还通过创新功能赢得了消费者的青睐。巨盛电子凭借技术创新,逐渐在电子行业中崭露头角,成为市场的领导者。

DBLECTRO公司的发展小趣事

2010年,迪贝电子面临了一次重大的市场挑战。随着国内外竞争对手的不断涌入,气体检测及分析仪器市场的竞争日益激烈。为了应对这一挑战,迪贝电子加大了技术创新的力度,积极引进国内外最新的技术和设备,不断提升产品的性能和品质。同时,公司还加强了与客户的沟通和合作,深入了解客户需求,提供个性化的解决方案。这些努力使得迪贝电子在激烈的市场竞争中保持了领先地位。

GradConn Ltd公司的发展小趣事

GradConn深知不同客户对连接解决方案的需求各不相同,因此公司特别注重提供定制化服务。通过与客户紧密合作,GradConn能够深入了解其特定需求,并据此设计出符合客户要求的定制化产品。这种服务不仅提升了客户的满意度,还增强了GradConn在市场上的竞争力。许多知名企业都选择GradConn作为其连接器和电缆组件的供应商,正是看中了其强大的定制化能力。

Gang Song Electronics Co Ltd公司的发展小趣事

GainSpan公司成立于行业技术日新月异的时代,专注于超低功耗WiFi系统芯片和模块的设计、开发和制造。其创始团队凭借对物联网(IoT)市场的敏锐洞察,认为低功耗技术将是未来智能家居、可穿戴设备和工业物联网等领域的关键。通过不断的技术研发,GainSpan逐渐在行业内建立了自己的技术优势,为后来的并购奠定了基础。

天二科技(EVER OHMS)公司的发展小趣事

天二科技(EVER OHMS)于1988年正式成立,其初创团队便专注于电阻器领域的研发与制造。面对当时电子行业的激烈竞争,天二科技凭借对电阻器技术的深入理解,成功开发出多款高性能、高精度的电阻器产品,迅速在市场中崭露头角。这些产品不仅满足了当时市场的需求,更为公司后续的发展奠定了坚实的基础。

台湾奇力(Chip)公司的发展小趣事

面对激烈的市场竞争,奇力公司不断推出具有创新性和差异化的产品。例如,奇力公司最近主推平板衬底芯片,通过调整产品尺寸和价格策略,与竞争对手形成差异化竞争。这种策略不仅提升了奇力公司的市场份额,也提高了客户的满意度和忠诚度。

问答坊 | AI 解惑

基于MAX1647的大功率激光电源的设计

1 引言   随着二极管泵浦全固态激光器相关技术的不断发展,它在工业、国防科研、生物医学工程等领域的应用越来越广泛,对其输出功率、可靠性要求也不断提高。作为二极管泵浦全固态激光器的重要组成部分的电源,其可靠性、稳定性也就显得格外重要 ...…

查看全部问答>

NEC78k0C语言及 汇编教程

本帖最后由 paulhyde 于 2014-9-15 03:34 编辑 NEC78k0C语言及 汇编教程  …

查看全部问答>

画PCB经验谈

选Design-Rules 一般需要重新设置以下几点: 1、安全间距(Routing标签的Clearance Constraint) 它规定了板上不同网络的走线焊盘过孔等之间必须保持的距离。一般板子可设为0.254mm,较空的板子可设为0.3mm,较密的贴片板子可设为0.2-0.22mm,极少 ...…

查看全部问答>

比较DFF、Latch Single 与Two Phase 优缺?

请问能否比较在一个pipeline电路中 使用D Flip-Flop、Latch Based Single Phase与 Latch Based Two Phase Clocking的优缺点 我有用primetime比较第一者与第三者的最大操作频率,发现第一者会稍微高一些 不知道是不是有做错…

查看全部问答>

CE printf不能用咋办啊??CE 提示建议使用StringCchVPrintfA函数??

最近移植个库,库以前是在PC上编译的,都是用多字节的printf,在CE下报错, 情况如下: error C2065: \'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA\' : undeclared identifier 然后我就按它的提示使用StringCchPrintfA; 定义了 ...…

查看全部问答>

2440开发板3.5寸液晶套餐仅售499元

    MC2440G开发板采用核心板与底板分开设计,更有利于用户的二次开发。用户在不需要更改核心部分的情况下只需修改底板就能开发出自己的产品。并且核心板上集成了常用的以太网和音频等功能,简化了用户的设计。核心板和底板的布局和走线 ...…

查看全部问答>

wince 下 联接USB 宽行针式打印机可行吗?

    最近需要实现在WINCE5.0中,联接USB口的宽行针式打印机,不知道有没有好的解决方案?如果打印机厂商有好的wince下的驱动,哪就比较简单,如果没有如何解决…

查看全部问答>

基于SEED-DIM3517 DIY申请

功能还有很多想法,主要看实现过程是否顺利,谢谢大家!…

查看全部问答>

PB11坏掉了?可能是什么原因?

PB11设置为输出的,该IO口上的电容可能会高到105如果不接负载,那么能够输出波形,但很容易受到其他信号的干扰,会有<2ns的脉冲;如果接负载,信号都没有还好离PB10近,把这2个连在一起,实现同样功能后,问题解决。可能是什么原因引起IO口 ...…

查看全部问答>

如何配置才能使用MSP430仿真器的SBW模式

求达人给予指点 现在板子已经到了 元件也焊接好了 MSP430G2121 使用的是SBW模式 仿真器连接不上,求助!…

查看全部问答>