Stm32-窗口看门狗实验

来源:互联网 发布:手机上编程软件 编辑:程序博客网 时间:2024/05/16 18:32

通过学习窗口看门狗实验了解并复习了:

<span style="white-space:pre"></span>外部中断配置步骤:
<span style="white-space:pre"></span>(1)初始化I/O为输入
<span></span>(2)开启复用时钟,设置I/O口与中断线映射关系(用到GPIOA,相应开时钟)
<span></span>(3)开启相应线上中断时间,选泽触发关系<span style="font-family: Arial, Helvetica, sans-serif;"></span>
<span style="font-family: Arial, Helvetica, sans-serif;">             <strong></strong></span><span style="font-family: Arial, Helvetica, sans-serif;">(4)配置中断分组NVIC,使能中断</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span></span>     (5)编写中断服务函数</span>

1.外部中断初始化EXTI_Initd的初始化即:

#include "exti.h"#include "led.h"#include "key.h"#include "delay.h"#include "usart.h"  ////////////////////////////////////////////////////////////////////////////////// <span style="white-space:pre"></span>   //外部中断0服务程序void EXTI0_IRQHandler(void){<span style="white-space:pre"></span>delay_ms(10);//消抖<span style="white-space:pre"></span>if(KEY2==1)<span style="white-space:pre"></span> //按键2<span style="white-space:pre"></span>{<span style="white-space:pre"></span>LED0=!LED0;<span style="white-space:pre"></span>LED1=!LED1;<span style="white-space:pre"></span><span style="white-space:pre"></span>}<span style="white-space:pre"></span> <span style="white-space:pre"></span>EXTI->PR=1<<0;  //清除LINE0上的中断标志位  }//外部中断15~10服务程序void EXTI15_10_IRQHandler(void){<span style="white-space:pre"></span><span style="white-space:pre"></span>delay_ms(10);    //消抖<span style="white-space:pre"></span> <span style="white-space:pre"></span>if(KEY0==0)      //按键0<span style="white-space:pre"></span>{<span style="white-space:pre"></span>LED0=!LED0;<span style="white-space:pre"></span>}else if(KEY1==0)//按键1<span style="white-space:pre"></span>{<span style="white-space:pre"></span>LED1=!LED1;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>EXTI->PR=1<<13;     //清除LINE13上的中断标志位  <span style="white-space:pre"></span>EXTI->PR=1<<15;     //清除LINE15上的中断标志位  }
void EXTIX_Init(void){RCC->APB2ENR|=1<<2;     //使能PORTA时钟JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD   GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入  GPIOA->CRL|=0X00000008;   GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入  GPIOA->CRH|=0X80800000;    GPIOA->ODR|=1<<13;   //PA13上拉,PA0默认下拉GPIOA->ODR|=1<<15;   //PA15上拉Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);    //抢占2,子优先级2,组2MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2   }
<span style="white-space:pre"></span>
   
2.窗口看门狗IWDG_Init函数初始化“:

#include "wdg.h"#include "led.h"//初始化独立看门狗//prer:分频数:0~7(只有低3位有效!)//分频因子=4*2^prer.但最大值只能是256!//rlr:重装载寄存器值:低11位有效.//时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms).void IWDG_Init(u8 prer,u16 rlr) {IWDG->KR=0X5555;//使能对IWDG->PR和IWDG->RLR的写     IWDG->PR=prer;  //设置分频系数     IWDG->RLR=rlr;  //从加载寄存器 IWDG->RLR  IWDG->KR=0XAAAA;//reload     IWDG->KR=0XCCCC;//使能看门狗}//喂独立看门狗void IWDG_Feed(void){IWDG->KR=0XAAAA;//reload   }//保存WWDG计数器的设置值,默认为最大.u8 WWDG_CNT=0x7f;//初始化窗口看门狗//tr   :T[6:0],用于存储计数器的值//wr   :W[6:0],用于存储窗口值//fprer:窗口看门狗的实际设置//低2位有效.Fwwdg=PCLK1/4096/2^fprer.void WWDG_Init(u8 tr,u8 wr,u8 fprer){  RCC->APB1ENR|=1<<11;//使能wwdg时钟WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.   WWDG->CFR|=fprer<<7;    //PCLK1/4096再除2^fprerWWDG->CFR|=1<<9;        //使能提前唤醒中断WWDG->CFR&=0XFF80;     WWDG->CFR|=wr;    //设定窗口值     WWDG->CR|=WWDG_CNT|(1<<7); //开启看门狗,设置7位计数器      MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2   }//重设置WWDG计数器的值void WWDG_Set_Counter(u8 cnt){WWDG->CR|=(cnt&0x7F);//重设置7位计数器}//窗口看门狗中断服务程序void WWDG_IRQHandler(void){    u8 wr,tr;   wr=WWDG->CFR&0X7F;tr=WWDG->CR&0X7F;if(tr<wr)WWDG_Set_Counter(WWDG_CNT);//只有当计数器的值,小于窗口寄存器的值才能写CR!!      WWDG->SR=0X00;//清除提前唤醒中断标志位LED1=!LED1;}
</pre><pre name="code" class="objc"><span style="white-space:pre"></span>stm32中文手册P321.


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗太淘气不听话怎么办 菊花叶子卷了怎么办 菊花的叶子发黄怎么办 卫生间墙外掉皮怎么办 卫生间门边掉皮怎么办 泰迪狗鼻子不黑怎么办 小狗的鼻子干燥怎么办 小狗鼻子很干燥怎么办 电动车被偷车牌怎么办 小白鞋刷完变黄怎么办 机箱没有光驱位怎么办 新生儿脐带有脓怎么办 婴儿漾奶呼呼吐怎么办 初生婴儿黑白颠倒怎么办 新生儿6天拉肚子怎么办 婴儿眼里有泪水怎么办 十个月宝宝拉肚子怎么办 腹泻十几天了怎么办 新生儿37.3度要怎么办 婴儿发烧37.3度怎么办 小孩子太吵了怎么办 一年级孩子学习差怎么办 马克笔涂错了怎么办 孩子说话不流利怎么办 儿童最近不吃饭怎么办 不爱吃饭偏瘦怎么办 一岁半小宝宝不爱吃饭怎么办 家养的小鸡打架怎么办 小鸡关在一起打架怎么办 小孩感冒出汗多怎么办 宝宝感冒出汗了怎么办 出汗多怎么办%3f 孩子睡觉出汗多怎么办 三年级孩子成绩下滑怎么办 幼儿数学不开窍怎么办 孩子一年级学习跟不上怎么办 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办