完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//窗口看门狗初始化程序 void WWDG_Init(uint8_t ztr,uint8_t zwr,uint32_t ***prer) { NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); //使能窗口看门狗时钟 WWDG_CNT=ztr&WWDG_CNT; //初始化WWDG_CNT. WWDG_SetPrescaler(***prer); //设置分频值 WWDG_SetWindowValue(zwr); //设置窗口值 //WWDG_SetCounter(WWDG_CNT);//设置计数值 WWDG_Enable(WWDG_CNT); //开启看门狗, WWDG_ClearFlag();//清除提前唤醒中断标志位 WWDG_EnableIT();//开启提前唤醒中断 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//嵌套优先级分组为2, NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn; //窗口看门狗中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //抢占优先级为2 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级为3 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能窗口看门狗 NVIC_Init(&NVIC_InitStructure); } /*****************************************************************************/ //窗口看门狗中断服务程序 void WWDG_IRQHandler(void) { // WWDG_SetCounter(WWDG_CNT); //一般不在这个中断里喂狗 WWDG_ClearFlag();//清除提前唤醒中断标志位 //执行一些系统在复位前要做的一些操作,比如保存重要数据等 } /*****************************************************************************/ //窗口看门狗喂狗操作,即如何喂狗 void SetWatchDog(void) { zwr=WWDG->CFR&0X5F;//窗口值 ztr=WWDG->CR&0X7F;//计数值 if((0x40 {//这一地方刚开始错写成if(0x40 WWDG_SetCounter(WWDG_CNT);//喂狗 printf("正在喂狗n"); } } /*****************************************************************************/ |
|
相关推荐
|
|
请问ad9910芯片的ram模式在接收数据时为什么会出现一段方波?
1973 浏览 1 评论
795 浏览 0 评论
不懂真得问!FREERTOS在中断里面,可以调用有任务级临界段代码的函数吗?
1908 浏览 1 评论
2131 浏览 1 评论
2307 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-1 16:46 , Processed in 0.693605 second(s), Total 66, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191