文章目录

  • 其它文章链接,独家吐血整理
  • 实验现象(实验六)
  • 主程序(实验六)
  • 独立看门狗初始化程序(实验六)
  • 代码讲解(实验六)
  • 实验现象(实验七)
  • 主程序(实验七)
  • 窗口看门狗初始化程序(实验七)
  • 代码讲解(实验七)

其它文章链接,独家吐血整理

(实验3)单片机,STM32F4学习笔记,代码讲解【按键输入实验】【正点原子】【原创】
(实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】
(实验5)单片机,STM32F4学习笔记,代码讲解【外部中断实验】【正点原子】【原创】
(实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】
(实验8)单片机,STM32F4学习笔记,代码讲解【定时器实验】【正点原子】【原创】
(实验9)单片机,STM32F4学习笔记,代码讲解【PWM输出实验】【正点原子】【原创】
(实验10)单片机,STM32F4学习笔记,代码讲解【输入捕获实验】【正点原子】【原创】
(实验11)单片机,STM32F4学习笔记,代码讲解【电容触摸按键实验】【正点原子】【原创】
(实验12)单片机,STM32F4学习笔记,代码讲解【OLED显示实验】【正点原子】【原创】
(实验13)单片机,STM32F4学习笔记,代码讲解【TFTLCD彩屏显示实验】【正点原子】【原创】
(实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】
(实验17)单片机,STM32F4学习笔记,代码讲解【待机唤醒实验】【正点原子】【原创】
(实验23)单片机,STM32F4学习笔记,代码讲解【DMA实验】【正点原子】【原创】
(实验25)单片机,STM32F4学习笔记,代码讲解【SPI实验】【正点原子】【原创】
(实验34)单片机,STM32F4学习笔记,代码讲解【FLASH模拟EEPROM实验】【正点原子】【原创】
(实验36)单片机,STM32F4学习笔记,代码讲解【外部SRAM实验】【正点原子】【原创】
(实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】
(实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
(实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】
(实验46)单片机,STM32F4学习笔记,代码讲解【FPU测试实验】【正点原子】【原创】
(实验47)单片机,STM32F4学习笔记,代码讲解【DSP-FFT测试实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验-RTC时钟实验】【正点原子】【原创】
(实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

实验现象(实验六)

本实验,如果看门狗没有复位,开发板的DS0将常亮,如果WK_UP按键按下,就喂狗,只要WK_UP不停的按,看门狗就一直不会产生复位,保持DS0的常亮,一旦超过看门狗定溢出时间(Tout=1s)还没按,那么将会导致程序重启,这将导致DS0熄灭一次。

主程序(实验六)

int main(void)
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);  //初始化延时函数LED_Init();               //初始化LED端口KEY_Init();           //初始化按键delay_ms(100);    //延时100ms IWDG_Init(4,500); //与分频数为64,重载值为500,溢出时间为1s  LED0=0;                      //先点亮红灯while(1){if(KEY_Scan(0)==WKUP_PRES)//如果WK_UP按下,则喂狗{IWDG_Feed();//喂狗}delay_ms(10);};
}

独立看门狗初始化程序(实验六)

//初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//rlr:自动重装载值,0~0XFFF.
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
void IWDG_Init(u8 prer,u16 rlr)
{IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写IWDG_SetPrescaler(prer); //设置IWDG分频系数IWDG_SetReload(rlr);   //设置IWDG装载值IWDG_ReloadCounter(); //reloadIWDG_Enable();       //使能看门狗
}//喂独立看门狗
void IWDG_Feed(void)
{IWDG_ReloadCounter();//reload
}int main(void)
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);  //初始化延时函数LED_Init();               //初始化LED端口KEY_Init();           //初始化按键delay_ms(100);    //延时100ms IWDG_Init(4,500); //与分频数为64,重载值为500,溢出时间为1s  LED0=0;                      //先点亮红灯while(1){if(KEY_Scan(0)==WKUP_PRES)//如果WK_UP按下,则喂狗{IWDG_Feed();//喂狗}delay_ms(10);};
}

代码讲解(实验六)

//独立看门狗,内部专门32Khz(注意不是精确32Khz)低速时钟驱动,即主时钟发生故障,它仍然有效
//分为三个寄存器,分别是关键字寄存器,预分频寄存器,重装载寄存器
//关键字寄存器32位只用0-15位,主要用来,启动独立看门狗
//预分频寄存器32位只用0-2位,主要用来,设置看门狗时钟的分频系数,000-111依次为4分频-8分频–256分频
//重装载寄存器32位只用0-11位,主要用来,保存重装载到计数器中的值
//注意,独立看门狗是的计数器,是递减计数的
//独立看门狗计算时间=42的prer次方rlr/40=416500/40=800(开发指南中写的是40,不知道为啥上面是32?)

实验现象(实验七)

本实验, 程序一运行则开启WWDG,并使得DS0亮300ms后关闭,进入死循环。等待WWDG中断的
到来,在中断里面,喂狗,并执行DS1的翻转操作。所以可以看到DS1不停的闪烁,而DS0只在 刚启动的时候闪一下。

主程序(实验七)

int main(void)
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);  //初始化延时函数LED_Init();               //初始化LED端口KEY_Init();           //初始化按键LED0=0;                //点亮LED0delay_ms(300);WWDG_Init(0x7F,0X5F,WWDG_Prescaler_8);     //计数器值为7f,窗口寄存器为5f,分频数为8       while(1){LED0=1;  //熄灭LED灯}
}

窗口看门狗初始化程序(实验七)

//保存WWDG计数器的设置值,默认为最大.
u8 WWDG_CNT=0X7F;
//初始化窗口看门狗
//tr   :T[6:0],计数器值
//wr   :W[6:0],窗口值
//fprer:分频系数(WDGTB),仅最低2位有效
//Fwwdg=PCLK1/(4096*2^fprer). 一般PCLK1=42Mhz
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); //使能窗口看门狗时钟WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT. WWDG_SetPrescaler(fprer); //设置分频值WWDG_SetWindowValue(wr); //设置窗口值
//  WWDG_SetCounter(WWDG_CNT);//设置计数值WWDG_Enable(WWDG_CNT);  //开启看门狗NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;  //窗口看门狗中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;  //抢占优先级为2NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;                 //子优先级为3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //使能窗口看门狗NVIC_Init(&NVIC_InitStructure);WWDG_ClearFlag();//清除提前唤醒中断标志位WWDG_EnableIT();//开启提前唤醒中断
}//窗口看门狗中断服务程序
void WWDG_IRQHandler(void)
{WWDG_SetCounter(WWDG_CNT); //重设窗口看门狗值WWDG_ClearFlag();//清除提前唤醒中断标志位LED1=!LED1;
}

代码讲解(实验七)

//窗口看门狗通常用来监测由外部干扰或不可预见的逻辑条件造成的程序跑飞而产生的软件故障
//递减计数器T6(其实是第七位,T0开始)位变成0之前被刷新会造成MCU复位,如果没有就是正常按照预设置的时间周期复位
//上面那句话写得不对,懒得改了,总共有两种刷新方式,具体可看开发指南
//窗口看门狗分为三个寄存器,控制寄存器,配置寄存器,状态寄存器
//控制寄存器,32位,低8位有效,只用低8位,T0-T6存储看门狗计数器值,第7位置1启动看门狗,改位只能硬件复位清0
//配置寄存器,32位,只用0-9位,7-8位00–11分别是分频1,分频2,分频4,分频8,0-6位设置窗口值=0x40
//就是说,如果在快复位前的窗口值=0x40时间时,会提醒你还有0x40时间就要复位了,赶紧喂狗
//于是一般在这个时间点设置中断进行喂狗,重新写入计数器值,否则时间一到就会引起看门狗自动复位
//状态寄存器,32位,只用0位,用来记录当前是否有提前唤醒的标志,也就是说当计数器值减到0x40窗口值时
//此位硬件置1,它必须由软件置0(无法软件写1,只能写0)

//超时公式==开发指南中写的和上面不一样,不知道哪个正确,//Fwwdg=PCLK1/(4096*2^fprer).
一般PCLK1=42Mhz中的Fwwdg就是超时时间

(实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】相关推荐

  1. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)

    继续更新学习STM32的历程,今天学习看门狗. 在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环.为了解决这个问题,产生了一种用于监测单片机程序运行状态的 ...

  2. STM32工作笔记0060---窗口看门狗实验

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152

  3. STM32工作笔记0059---独立看门狗实验

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152

  4. (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 SD卡驱动程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ( ...

  5. (实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 FATFS初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创 ...

  6. (实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 LWIP初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ...

  7. (实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 内存池初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ...

  8. (实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 串口中断程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] (实 ...

  9. (实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】

    文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化程序 代码讲解 文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化 ...

最新文章

  1. c, c++函数名编译符号修饰符说明
  2. 红帽linux登陆错误,xmanager连接RedHat出错:/usr/X11R6/bin/xterm: No such file or directory
  3. 在kde中让gvim自动最大化
  4. iptables中文man文档
  5. 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础
  6. 受疫情影响 MWC 2020正式取消
  7. Windows下打开Url 代码封装 C++
  8. ubuntu 上安装mysql
  9. Python 第三方模块安装出现的问题和解决方案.
  10. shell基础之for循环语句
  11. 渗透测试工程师从业经验
  12. websphere java和进程管理_Websphere 学习(一)
  13. SpringSecurity自定义多Provider时提示No AuthenticationProvider found for问题的解决方案与原理(二)
  14. REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格
  15. 使用Sigar在不同操作系统遇到的坑
  16. nbu进程的异常造成备份出错
  17. 64位系统使用Access 数据库文件遇到的错误和解决办法
  18. 使用PIL对收集到的图片进行规范化处理
  19. python dataframe取行列_dataframe取元素方法总结
  20. PMP考试都是什么题?

热门文章

  1. inurl:php?title=,微信 JS接口
  2. 【局部图像描述子】Harris角点检测器
  3. php编写出春晓,春晓和彭坦写给对方的信.幸福就是这么简单.来小感动下八~
  4. html5怎么画机器猫,不用HTML5/CSS3如何在网页上画机器猫
  5. 此时有声胜无声,听雨,心中生出无限欣喜,如饮了仙露,吸了醍醐,大有飘飘欲仙之感。
  6. mysql 硬盘安装图解_MySQL安装教程图解
  7. 五年Java外包转型大数据架构,就是这么霸气
  8. 这届年轻人,喜欢扎堆在B站看剧
  9. 电信,移动,联通黑名单用户是什么意思
  10. 产品经理学习——如何与UI工程师进行有效沟通