历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2019年11月12日 | STM32开发笔记77: 内部看门狗长延时的产生

2019-11-12 来源: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秒。


推荐阅读

史海拾趣

Exar公司的发展小趣事

Exar公司从一个小型创业公司起步,凭借其独特的技术和创新的思维,在电子行业中崭露头角。公司初期专注于数据传输和存储技术的研发,通过不断的技术创新和产品优化,逐渐在市场上建立起良好的口碑。随着公司规模的扩大,Exar开始涉足更多的领域,包括网络通信、消费电子等,逐步发展成为一家跨行业的综合性企业。

Ceratech Corporation公司的发展小趣事

随着电子行业的快速发展,对电感产品的需求也日益增长。Ceratech Corporation公司敏锐地捕捉到了这一市场机遇,决定拓展电感产品线。公司投入大量研发资源,成功开发出一系列新型电感产品,这些产品不仅性能优异,而且具有广泛的应用范围。通过不断拓展电感产品线,Ceratech Corporation进一步巩固了其在电子行业的地位。

C-MEDIA公司的发展小趣事

在2000年代初,C-MEDIA以其在音频处理领域的专业技术而知名。然而,随着市场竞争的加剧和技术的快速发展,公司意识到需要调整战略以适应市场变化。于是,C-MEDIA在与瑞昱(Realtek)达成收购协议后,决定将AC97、HD Audio板载音频芯片技术转让给Realtek,并退出板载声卡领域。这一决策使得C-MEDIA能够专注于中高端音频处理芯片的研发,进一步巩固了其在独立声卡市场的地位。

Hei Inc Optoelectronic Division公司的发展小趣事
通过电子元件实现精确控制,可以更加灵活地调整加热时间、温度等参数,以适应不同材料和工艺的需求。
Advanced Electronic Packaging公司的发展小趣事

面对电子行业的快速发展和不断变化的市场需求,Advanced Electronic Packaging公司始终保持敏锐的洞察力和强烈的创新意识。公司不断加大研发投入,推动封装技术的持续创新。从最初的单一材料封装,到后来的多功能复合封装,再到如今的智能化封装技术,公司的每一次创新都引领着电子封装行业的发展潮流。这些创新成果不仅提升了产品的附加值,还推动了整个电子产业的升级换代。

Glow-Lite Corp公司的发展小趣事

随着国内市场的逐渐饱和,Advanced Electronic Packaging公司开始将目光投向海外市场。公司积极参与国际电子展会和技术交流活动,展示其先进的封装技术和优质产品。同时,公司还加大了对海外市场的宣传力度,通过线上线下相结合的方式提升品牌知名度和影响力。在不懈的努力下,公司的产品和服务逐渐赢得了国际市场的认可和青睐,海外市场份额逐年攀升。

问答坊 | AI 解惑

模拟电路一日通(Ti的模拟电路应用基础资料)

本帖最后由 dontium 于 2015-1-23 11:33 编辑 模拟电路一日通(Ti的模拟电路应用基础资料) 本人认为很好的资料 …

查看全部问答>

eeworld论坛这里怎么获得积分啊,我初学者,很多问题又都回答不了,拿不了分,但我的分又快用完了……

eeworld论坛这里怎么获得积分啊,我初学者,很多问题又都回答不了,拿不了分,但我的分又快用完了………

查看全部问答>

Wince5.0 With PlatForm Builder 安装补丁后的问题。

PB5.0,安装了2007年全年的补丁(下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=a54779d5-f4a5-49f0-9e36-979d461f536c&DisplayLang=en)后,编译生成的NK.bin,烧入2410的板子后,系统启动时候出现,     致命 ...…

查看全部问答>

vxworks对java的支持?

请教:    想在vxworks下做java 开发,不知道能不能行得通?听说vxworks6.4+workbench可以,但却没有这方面的资料.希望高手给予指点.有此想发的朋友一起研究. qq:120964089…

查看全部问答>

驱动获得系统目录

驱动里面怎么获得系统目录啊。。…

查看全部问答>

k51开发环境是针对几位单片机的呀?因为不同位的单片机汇编器是不同的呀。

k51开发环境是针对几位单片机的呀?因为不同位的单片机汇编器是不同的呀。…

查看全部问答>

Industry’s First Fully Isolated Industrial CAN Transceivers

Analog Devices, Inc. has expanded its industry-leading isolated interface product portfolio with two transceivers that are the first to isolate both data signals and power for systems using the CAN (control-area network) communica ...…

查看全部问答>

MSP430 FLASH 请教

IAR编译器以下显示是不是说 FLASH 程序占用8 884 bytes对吗?那也可以说是9K不到是吗? 8 884 bytes of CODE memory 788 bytes of CONST memory (+ 14 bytes shared) 357 bytes of DATA memory (+ 64 bytes shared)…

查看全部问答>

stm32驱动ov7660工作的时候出问题了。。。求指点呀!!!!

程序老是卡在摄像头初始化那块。。。这该如何是好呀?????    …

查看全部问答>

串口打印字符的问题

其实就是简单的串口打印字符的问题,但我这里需要用到的是类似printf()这样的函数,要知道printf ()这括号里面输入的参数是不定的即所谓的不定参数函数。网上找了好多资料 都说可以做函数的重定义。重定义函数如下#ifdef __GNUC__ #define P ...…

查看全部问答>