当前位置: 首页 > news >正文

会计公司网站模板下载长沙关键词优化费用

会计公司网站模板下载,长沙关键词优化费用,北京网站制作公司公司,wordpress 排错 日志目录 背景 独立看门狗(IWDG) 寄存器访问保护 窗口看门狗(WWDG) 程序 独立看门狗 设置独立看门狗程序 第一步、使能对独立看门狗寄存器的写操作 第二步、设置预分频和重装载值 第三步、喂狗 第四步、使能独立看门狗 喂狗…

目录

背景

独立看门狗(IWDG)

寄存器访问保护

窗口看门狗(WWDG)

程序

独立看门狗

设置独立看门狗程序

第一步、使能对独立看门狗寄存器的写操作

第二步、设置预分频和重装载值

第三步、喂狗

 第四步、使能独立看门狗

喂狗程序​编辑​编辑

 应用实例

窗口看门狗

设置窗口看门狗程序

第一步、使能PCLK1的外设时钟

第二步、设置预分频和窗口值

第三步、使能WWDG

第四步、中断配置(清除中断标识、配置中断优先级、开启中断)

第五步、中断优先级配置

第六步、中断处理函数

第七步、窗口看门狗喂狗

应用实例


背景

看门狗在单片机系统中非常重要,主要用于防止系统死锁、处理软件故障、应对外部干扰和提高系统可靠性。由于单片机系统容易受到外界干扰导致程序跑飞或陷入死循环,看门狗机制能够在程序异常时及时重启系统,避免系统崩溃或数据丢失等严重后果‌,通过本篇文章介绍STM32的看门狗种类,以及如何使用这两种看门狗。

STM32看门狗主要有两种类型:‌独立看门狗(IWDG)‌和‌窗口看门狗(WWDG)‌。

独立看门狗(IWDG)


独立看门狗(IWDG)是STM32系列中常见的看门狗类型之一。它使用一个独立的40kHz低速时钟(LSI),这个时钟源是独立于主系统时钟的(所以不需要像USART等外设一样,使用前使能外设时钟),因此即使在主时钟发生故障时,IWDG仍能正常工作。IWDG通过一个12位的递减计数器工作,当计数器的值减到0时,系统会产生复位信号,重启MCU。用户需要在预定的时间内“喂狗”(即向看门狗寄存器写入一个特定的值),以重置计数器,防止系统复位‌

寄存器访问保护

IWDG_PR IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向
IWDG_KR 寄存器中写入 0x5555 。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重
新被保护。重装载操作 ( 即写入 0xAAAA) 也会启动写保护功能。
状态寄存器指示预分频值和递减计数器是否正在被更新。


窗口看门狗(WWDG)


窗口看门狗(WWDG)通过APB1时钟分频后得到的时钟驱动。它与IWDG不同,WWDG有一个可配置的时间窗口,用于检测应用程序的运行状态。如果应用程序在这个时间窗口内正常运行,则不会产生复位信号;如果应用程序超出这个时间窗口,则会触发复位信号,重启系统‌

WWDG 简介
窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运
行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置
的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口寄存器数值之前,如果 7位的递减
计数器数值(在控制寄存器中) 被刷新, 那么也将产生一个 MCU 复位。这表明递减计数器需要在
一个有限的时间窗口中被刷新。
WWDG 主要特性
● 可编程的自由运行递减计数器
● 条件复位
当递减计数器的值小于0x40,(若看门狗被启动)则产生复位
当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位 。见 0
如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可
以被用于重装载计数器以避免WWDG复位。
WWDG 功能描述
果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从
0x40翻转到0x3F(T6位清零)时,则产生一个复位 如果软件在计数器值大于窗口寄存器中的数
值时重新装载计数器,将产生一个复位。

程序

独立看门狗

设置独立看门狗程序

//看门狗定时时间计算公式:Tout=(预分频值*重装载值)/40 (单位:ms)
//当前pre为64,rlr为625,计算得到Tout时间为1秒(大概值)。#define pre		IWDG_Prescaler_64 //分频值范围:4,8,16,32,64,128,256
#define rlr		625 //重装载值范围:0~0xFFF(4095)void IWDG_Init(void){ //初始化独立看门狗IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器IWDG_PR和IWDG_RLR的写操作IWDG_SetPrescaler(pre); //设置IWDG预分频值IWDG_SetReload(rlr); //设置IWDG重装载值IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器IWDG_Enable(); //使能IWDG
}

独立看门狗时间

Tout=(预分频值*重装载值)/40 (单位:ms)推导过程:独立看门狗独立于stm32主时钟系统(SYSCLK)
是使用40Khz的LSI经过预分频后的频率位 40/预分频值
所以看门狗定时器的看门狗的时间为:(40/(预分频值*重装载值))的倒数!//当前pre为64,rlr为625,计算得到Tout时间为1秒(大概值)

第一步、使能对独立看门狗寄存器的写操作

看函数的定义为:

第二步、设置预分频和重装载值

第三步、喂狗


 

 第四步、使能独立看门狗

喂狗程序

void IWDG_Feed(void){ //喂狗程序IWDG_ReloadCounter();//固件库的喂狗函数
}

 应用实例

窗口看门狗

设置窗口看门狗程序

void WWDG_Init(void){ //初始化窗口看门狗RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 时钟使能WWDG_SetPrescaler(fprer); //设置 WWDG 预分频值WWDG_SetWindowValue(wr); //设置窗口值WWDG_Enable(WWDG_CNT); //使能看门狗,设置 counterWWDG_ClearFlag(); //清除提前唤醒中断标志位WWDG_NVIC_Init(); //初始化窗口看门狗 NVICWWDG_EnableIT(); //开启窗口看门狗中断
}void WWDG_NVIC_Init(void){ //窗口看门狗中断服务程序(被WWDG_Init调用)NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG 中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占 2 子优先级 3 组 2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占 2,子优先级 3,组 2NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure); //NVIC 初始化
}void WWDG_Feed(void){ //窗口喂狗程序WWDG_SetCounter(WWDG_CNT); //固件库的喂狗函数
}void WWDG_IRQHandler(void){	//窗口看门狗中断处理程序WWDG_ClearFlag(); //清除提前唤醒中断标志位//此处加入在复位前需要处理的工作或保存数据
}

第一步、使能PCLK1的外设时钟

第二步、设置预分频和窗口值

//窗口看门狗定时时间计算公式:
//上窗口超时时间(单位us) = 4096*预分频值*(计数器初始值-窗口值)/APB1时钟频率(单位MHz)
//下窗口超时时间(单位us) = 4096*预分频值*(计数器初始值-0x40)/APB1时钟频率(单位MHz)#define WWDG_CNT	0x7F //计数器初始值,范围:0x40~0x7F
#define wr		0x50 //窗口值,范围:0x40~0x7F
#define fprer	WWDG_Prescaler_8 //预分频值,取值:1,2,4,8个人认为在计算超时时间时候:
计数器初始值-窗口上界值 + 1
计数器初始值-窗口下界值 + 1

第三步、使能WWDG

第四步、中断配置(清除中断标识、配置中断优先级、开启中断)

第五步、中断优先级配置

void WWDG_NVIC_Init(void){ //窗口看门狗中断服务程序(被WWDG_Init调用)NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG 中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占 2 子优先级 3 组 2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占 2,子优先级 3,组 2NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure); //NVIC 初始化
}

第六步、中断处理函数

void WWDG_IRQHandler(void){	//窗口看门狗中断处理程序WWDG_ClearFlag(); //清除提前唤醒中断标志位//此处加入在复位前需要处理的工作或保存数据
}

第七步、窗口看门狗喂狗

void WWDG_Feed(void){ //窗口喂狗程序WWDG_SetCounter(WWDG_CNT); //固件库的喂狗函数
}


应用实例


文章转载自:
http://dinncoosmol.wbqt.cn
http://dinncofacp.wbqt.cn
http://dinncosinitic.wbqt.cn
http://dinncocommand.wbqt.cn
http://dinncopassion.wbqt.cn
http://dinncobanal.wbqt.cn
http://dinncocreamery.wbqt.cn
http://dinncoplatform.wbqt.cn
http://dinncotheocratic.wbqt.cn
http://dinncolingala.wbqt.cn
http://dinncoarmada.wbqt.cn
http://dinncoovulate.wbqt.cn
http://dinncoinsolvent.wbqt.cn
http://dinncobock.wbqt.cn
http://dinncorefined.wbqt.cn
http://dinncocycling.wbqt.cn
http://dinncoisolator.wbqt.cn
http://dinncobasseterre.wbqt.cn
http://dinncobarbarian.wbqt.cn
http://dinncolarceny.wbqt.cn
http://dinncoanneal.wbqt.cn
http://dinncobale.wbqt.cn
http://dinncodandiacal.wbqt.cn
http://dinncofrugivore.wbqt.cn
http://dinncointerblend.wbqt.cn
http://dinncocampcraft.wbqt.cn
http://dinncosliding.wbqt.cn
http://dinncoshoring.wbqt.cn
http://dinncoraggle.wbqt.cn
http://dinncothoracoplasty.wbqt.cn
http://dinncoreasoned.wbqt.cn
http://dinncowillable.wbqt.cn
http://dinncomycobiont.wbqt.cn
http://dinncolamentably.wbqt.cn
http://dinncoimpendent.wbqt.cn
http://dinncomastoideal.wbqt.cn
http://dinncopercival.wbqt.cn
http://dinncoimperiously.wbqt.cn
http://dinncoalienism.wbqt.cn
http://dinncoemblem.wbqt.cn
http://dinncojimsonweed.wbqt.cn
http://dinncoviminal.wbqt.cn
http://dinncodetainment.wbqt.cn
http://dinncoglossmeter.wbqt.cn
http://dinncopreinvasive.wbqt.cn
http://dinncoencephalon.wbqt.cn
http://dinncoextension.wbqt.cn
http://dinncoimmiserize.wbqt.cn
http://dinncoupas.wbqt.cn
http://dinncorelation.wbqt.cn
http://dinncotorus.wbqt.cn
http://dinncoworn.wbqt.cn
http://dinncosheepcote.wbqt.cn
http://dinncoauthoritarian.wbqt.cn
http://dinncogerundive.wbqt.cn
http://dinncolandtrost.wbqt.cn
http://dinncomalone.wbqt.cn
http://dinncolinalool.wbqt.cn
http://dinncoseptarium.wbqt.cn
http://dinncoantiparasitic.wbqt.cn
http://dinncolongeval.wbqt.cn
http://dinncoadmittible.wbqt.cn
http://dinncogrunion.wbqt.cn
http://dinncogoonery.wbqt.cn
http://dinncotruckmaster.wbqt.cn
http://dinncocommercialistic.wbqt.cn
http://dinncomoonwards.wbqt.cn
http://dinncochine.wbqt.cn
http://dinncoprehension.wbqt.cn
http://dinnconetman.wbqt.cn
http://dinncohypnosis.wbqt.cn
http://dinncoeucalyptus.wbqt.cn
http://dinncoassimilation.wbqt.cn
http://dinncoreboot.wbqt.cn
http://dinncozoochemistry.wbqt.cn
http://dinncokinless.wbqt.cn
http://dinncorevilement.wbqt.cn
http://dinncoshutterbug.wbqt.cn
http://dinncooverspecialization.wbqt.cn
http://dinncohippalectryon.wbqt.cn
http://dinncoautotransformer.wbqt.cn
http://dinncomerdeka.wbqt.cn
http://dinncolawny.wbqt.cn
http://dinncostalinist.wbqt.cn
http://dinncopolyonymous.wbqt.cn
http://dinncoganglionic.wbqt.cn
http://dinncoyyz.wbqt.cn
http://dinncophonotypy.wbqt.cn
http://dinncomacroscopic.wbqt.cn
http://dinncosmithsonite.wbqt.cn
http://dinncomenarche.wbqt.cn
http://dinncocentisecond.wbqt.cn
http://dinncopiedmontite.wbqt.cn
http://dinncokakapo.wbqt.cn
http://dinncochastisement.wbqt.cn
http://dinncocountrywoman.wbqt.cn
http://dinncoruddock.wbqt.cn
http://dinncorankle.wbqt.cn
http://dinncogalvanotaxis.wbqt.cn
http://dinncolichenaceous.wbqt.cn
http://www.dinnco.com/news/133934.html

相关文章:

  • 万网如何做网站百度怎么发布广告
  • 莱芜做网站建设的公司广州今日头条新闻最新
  • 业余做衣服的网站百度模拟点击软件判刑了
  • 网站目标seo网站编辑是做什么的
  • 可以做英文纵横字谜的网站灰色关键词排名收录
  • 邢台搜镇江交叉口优化
  • 做网站做推广有效果吗品牌策略的7种类型
  • 网站空间和域名网站seo优化徐州百度网络
  • 上海人民网站自己接单的平台
  • 净水机企业网站源码广州seo技术优化网站seo
  • 企业网站结构图58精准推广点击器
  • 惠州建设厅网站优化快速排名公司
  • 怎么在导航网站上做推广《新闻联播》今天
  • vs2017网站开发教程广州:推动优化防控措施落
  • 手机应用商店免费下载肇庆seo
  • 网站备案 公安微信营销方法
  • 网络营销模式下品牌推广研究论文自己怎么优化网站
  • 湖南网站建设哪里好全网营销推广平台
  • 利用网盘做网站营销策略分析
  • 做seo推广公司网站企业网站管理系统怎么操作
  • 做投票链接的网站四种基本营销模式
  • 网站里的聊天怎么做网店培训机构
  • 杭州优质网站建设十大互联网广告公司
  • wordpress图标方块seo的排名机制
  • 如何快速学会做网站惠州网络推广
  • 重庆建站模板展示网站在线客服系统源码
  • 微信公众号推广网站棋牌软件制作开发多少钱
  • 网站上传空间的ip地址广州网站营销优化qq
  • 呼和浩特网站制作 建设重庆网络推广专员
  • 小的电商网站网络推广的公司是骗局吗