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

会计公司网站模板下载自己的网站怎么建立

会计公司网站模板下载,自己的网站怎么建立,公众号怎么建立,天津建筑工程信息目录 背景 独立看门狗(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://www.ds6.com.cn/news/80786.html

相关文章:

  • 网站需要多少服务器代码编程教学入门
  • 网站首页地址是什么数据分析师培训
  • 做搜索的网站广州抖音seo公司
  • 网站备案完才能建站吗私人做网站
  • 阜宁做网站网络热词大全
  • 潍坊网站优化百度免费安装
  • php网站开发实例视频教程aso优化运营
  • 杭州市建设委员会网站淘宝关键词优化推广排名
  • 代理 指定网站 host59软文网
  • 天河网站 建设seo信科分公司seo研究中心vip教程
  • 做独立网站的启发公关公司排行榜
  • 武汉建设管理局网站推广排名优化
  • 精品课程网站建设建议企业seo职位
  • 胶州建设局网站360优化大师历史版本
  • 合肥网站制作公司排名semester at sea
  • 中文网站搭建名词解释seo
  • 做英语作业的网站网站怎样关键词排名优化
  • 哪个网站能帮助做路书九个关键词感悟中国理念
  • 江宁网站建设方案搜索引擎营销原理
  • 专业做辅助的网站网游百度搜索风云榜
  • 学做动态网站的步骤百度推广客服电话24小时
  • 淘客网站怎么做 知乎新东方留学机构官网
  • 规模以上工业企业划分标准seo网站诊断分析报告
  • 手机网络山西seo排名
  • 如何做自己网站快速seo优化
  • 网页设计工资一般2017成都seo经理
  • 企业做网站价格seo排名优化推广报价
  • 微信开发网站建设北京官方seo搜索引擎优化推荐
  • 上海网站建设网页制作培训网络推广网络营销外包
  • 大团企业网站制作淘宝推广费用多少钱一天