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

怎么优化网站性能浙江省住房和城乡建设厅官网

怎么优化网站性能,浙江省住房和城乡建设厅官网,wordpress 古藤堡,石家庄做网络推广的网站1.IWDG狗简介 除了始终控制器的RCC_CSR寄存器的父为标志位和备份区域中的寄存器以外,系统复位 将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,产生一个系统复位: 1.NRST引脚上的 低 电平,即 外部复位;2…

在这里插入图片描述

1.IWDG狗简介

除了始终控制器的RCC_CSR寄存器的父为标志位和备份区域中的寄存器以外,系统复位 将复位所有寄存器至它们的复位状态。

当发生以下任一事件时,产生一个系统复位:

  • 1.NRST引脚上的 电平,即 外部复位;
  • 2.窗口看门狗计数器终止,即 WWDG复位;
  • 3.独立看门狗计数器终止,即 IWDG复位;
  • 4.软件复位 , 即 SW复位;
  • 5.低功耗管理复位。

1.1IWDG应用场景

在这里插入图片描述

1.2 IWDG工作原理

在这里插入图片描述

2. IWDG配置步骤

3.编程实战:验证不及时喂狗,系统将自动重启

3.1 公式计算:自动重载值和预分频系数

在这里插入图片描述

Tout = psc*rlr / fIWDG

  • Tout 是溢出时间 ,由开发人员确定,例如:1S
  • psc 是预分频系数,根据库头文件去查找, 例如:IWDG_PRESCALER_32 , 分频系数/32,最长时间是2.2758秒
  • fIWDG是独立的内部时钟源频率,这个要查芯片手册,例如:40KHz = 40 000
  • rlr 是自动重载值,根据公式计算得出。

(函数参数中的自动重载值预分频系数,根据溢出时间时钟频率进行设置。不要乱填写。)
在这里插入图片描述

在这里插入图片描述

3.2 程序截图

在这里插入图片描述
在这里插入图片描述

3.3 航顺HK32F030M 的IWDG

3.3.1 HK32F030M的看门狗时钟

独立的看门狗是基于一个 12 位的递减计数器和一个 8 位的预分频器,它由一个内部独立的114kHzRC 振荡器 提供时钟,因为这个 RC 振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选择字节可以配置成是软件或硬件启动看门狗。在调试模式,计数器可以被冻结。
在这里插入图片描述

HK32F030M数据手册_V1.0.13

3.3.2 HK32F030M的结构框架图

ARM 的 Cortex™-M0 处理器是最新一代的嵌入式 32 位 RISC 处理器,它是一个低成
本、低功耗的 MCU 平台,同时提供卓越的计算性能和先进的中断系统响应。
HK32F030M 系列产品拥有内置的 Cortex™-M0 核心,因此它与所有的 ARM 工具和软件
兼容。

该系列产品的功能框图如下图:

在这里插入图片描述

114kHz片内时钟

在这里插入图片描述

在这里插入图片描述
系统时钟需要在【system_hk32f030m.c】文件中设置;否则默认32MHz。

3.3.4 程序

3.3.4.1 自动重载值和预分频系数计算

计算 IWDG 的超时时间 1s。

Tout(s) = prv*rlv (s)/114000 (片内慢速 LSI 时钟:114kHz)

rlv = 1S*114000Hz /128 = 890

3.3.4.2 程序实现

bsp_iwdg.c

#include "bsp_iwdg.h"/** 设置 IWDG 的超时时间* Tout(s) = prv*rlv (s)/114000    // 114Khz HK32F030M片内时钟* rlv = 1S*114000Hz /128 = 890*        prv可以是[4,8,16,32,64,128,356]* prv:预分频系数,取值如下:*     @arg IWDG_Prescaler_4: IWDG prescaler set to 4*     @arg IWDG_Prescaler_8: IWDG prescaler set to 8*     @arg IWDG_Prescaler_16: IWDG prescaler set to 16*     @arg IWDG_Prescaler_32: IWDG prescaler set to 32*     @arg IWDG_Prescaler_64: IWDG prescaler set to 64*     @arg IWDG_Prescaler_128: IWDG prescaler set to 128*     @arg IWDG_Prescaler_256: IWDG prescaler set to 256* rlv:重载值,取值范围为:0-0xFFF* 函数调用举例:* IWDG_Config(IWDG_Prescaler_128, 890);  // IWDG 1s 超时溢出
*/void IWDG_Config(uint8_t prv, uint16_t rlv)
{/* 使能 预分频寄存器PR和重装载寄存器RLR可写 */IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable);/* 设置预分频器值 */IWDG_SetPrescaler( prv );/* 设置重装载寄存器值 */IWDG_SetReload( rlv );/* 把重装载寄存器的值放到计数器中 */ IWDG_ReloadCounter();/* 使能IWDG */IWDG_Enable();
}/* 喂狗 */
void IWDG_Feed(void)
{/* 把重装载寄存器的值放到计数器中,喂狗,防止IWDG复位当计数器的值减到0的时候会产生系统复位*/IWDG_ReloadCounter();
}

bsp_iwdg.h

#ifndef __IWDG_H
#define __IWDG_H#include "hk32f030m.h"void IWDG_Feed(void);
void IWDG_Config(uint8_t prv, uint16_t rlv);#endif

main.c

/********************************************************************************* @file    main.c* @author  Alexander* @version V1.0* @date    2022-xx-xx* @brief   IWDG独立看门狗实验******************************************************************************
* */ 
#include "hk32f030m.h" 
#include "bsp_led.h"
#include "bsp_key.h"
#include "bsp_iwdg.h"static void Delay(__IO uint32_t nCount); /*** @brief  主函数* @param  无  * @retval 无*/int main(void)
{/* LED端口初始化 */LED_GPIO_Config();Delay(0xFFFFF);/*-----------------------------------------------------------------------*//* 检查是否为独立看门狗复位 */if( RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET){/* 独立看门狗复位 */LED3_ON;/* 清除标志 */RCC_ClearFlag();/*如果一直不喂狗,会一直复位,加上前面的延时,会看到LED3灯闪烁。在1s时间内喂狗的话,则会持续灭LED3*/}else{/* 不是独立看门狗复位(可能为上电复位或者手动按键复位之类的) *//* 亮LED3 *///  LED2_ON;}/*-----------------------------------------------------------------------*//* 按键端口初始化 */Key_GPIO_Config();/* IWDG 1s 超时溢出 */IWDG_Config(IWDG_Prescaler_128, 890);  while(1)                            {	   /* 这里添加需要被监控的代码,如果有就去掉按键模拟喂狗,把按键扫描程序去掉 */if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  ){/* 喂狗,如果不喂狗,系统则会复位,LED1则会灭一次,如果在1s时间内准时喂狗的话,则LED3会在重启的时候亮,复位的时候灭 */IWDG_Feed();/* 喂狗后,LED3灭 */LED3_OFF;} }
}static void Delay(__IO uint32_t nCount)	 //简单的延时函数
{for(; nCount != 0; nCount--);
}#ifdef  USE_FULL_ASSERT
/*** @brief  Reports the name of the source file and the source line number*         where the assert_param error has occurred.* @param  file: pointer to the source file name* @param  line: assert_param error line source number* @retval None*/
void assert_failed(char* file , uint32_t line)
{/* User can add his own implementation to report the file name and line number,tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */	/* Infinite loop */while (1){		}
}
#endif /* USE_FULL_ASSERT */

3.3.4.3 成果展示

HK32F030MF4P6最小系统板之《独立看门狗复位》

4.独立看门狗总结

在这里插入图片描述


5.WWDG简介

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6. WWDG配置步骤

在这里插入图片描述

7.IWDG 和 WWDG的主要区别

在这里插入图片描述

在这里插入图片描述

如果我们知道whlie(1)里的代码执行总时间,比如是500ms,那么我们可以设置独立看门狗的溢出;时间是600ms,比500ms多一点,如果要被监控的程序没有跑飞正常执行的话,那么执行完 毕之后就会执行喂狗的程序,如果程序跑飞了那程序就会超时,到达不了喂狗的程序,此 时产生系统复位。

但是也不排除程序跑飞了又跑回来的了,刚好喂狗了,歪打正着。

所以 要想更精确的监控程序,可以使用窗口看门狗,窗口看门狗规定必须在规定的窗口时间内喂狗。


参考资料

  • [1] 【B站@正点原子官方】全是干货无套路 | 手把手教你深入学习独立看门狗&窗口看门狗

  • [2] 【B站@阿熊话太多】单片机中居然也有狗?STM32两条看门狗详解,独立看门狗和窗口看门狗

http://www.yayakq.cn/news/848595/

相关文章:

  • 优秀网站展示营销网站都有哪些
  • 做网站广告推广平台网站建设需要版块
  • 已备案网站增加域名建筑人才网有哪些
  • 企业网站设计需要多久软件工程专业就业前景
  • 网站建设结单 优帮云线上推广的公司
  • 知名响应式网站企业wordpress如何搬家
  • 企业宣传网站公司南阳阿里巴巴网站推广
  • 网站logo素材爱奇艺会员做任务送十天网站
  • 最好的建站公司怎样做境外网站上赚钱
  • 企业网站排行如何在微信上做广告
  • 网站备案要营业执照原件吗html5旅游网页设计成品
  • 免费企业网站开源系统哪个平台开网店不收费
  • 文山网站建设兼职网站服务器租用多少钱一年合适
  • 天水网站建设公司排名wordpress欢迎邮件代码
  • 网站后台修改的页面不能显示网站数据库怎么备份
  • 榆林做网站的公司建设工程合同和承揽合同的区别
  • 成都网站建设冠辰哪家强wordpress comment meta query
  • php服装网站模板找人开发一款app需要多少钱
  • 网站建设二公司孟州网站开发app
  • 一 网站建设方案做网站的公司名字
  • 烟台建设信息网站广州seo运营
  • 园区网站建设方案wordpress-5.0升级未被安装
  • 写网站的教程通过一个站点的建设方案
  • 城市建设网站金网站空间没有续费
  • 肯德基网站是哪家公司做的网页制作软件大全
  • 织梦网站源码下载网站推广建议
  • 网站优化推广排名大学生实训网站建设心得
  • 忻州推广型网站开发wordpress 阿里百秀
  • 个人全屏网站模板重庆建设工程证照查询网站
  • 罗湖做网站上海外贸公司招聘职位