完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
独立看门狗有几个重要的寄存器。
首先是关键字寄存器IWDG_KR,在关键字寄存器IWDG_KR中写入0xcccc,表示开始启用独立看门狗,此时计数器开始从 复位值0xfff递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。如果向IWDG_KR中写入0xaaaa,无论处于什么计数状态,IWDG_RLR中的值就会被重新加载,从而避免看门狗复位。 IWDG_PR 和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入 0x5555。需要注意的是,重装载操作(即写入0xAAAA)也会启动写保护功能。 预分频寄存器( IWDG_PR),该寄存器用来设置看门狗时钟的分频系数,最低为4,最高位256,该寄存器是一个32位的寄存器,但是我们只用了最低3 位,其他都是保留位。 其对应关系如下: 000:4分频 001:8分频 010:16分频 011:32分频 100:64分频 101:128分频 110:256分频 111:256分频 重装载寄存器 IWDG_RLR。该寄存器用来保存重装载到计数器中的值。该寄存器也是一个32位寄存器,但是只有低 12 位是有效的,看门狗计时器每次从该值开始,递减计数。 下面我们来看一下通过库函数来配置独立看门狗的步骤 1)取消寄存器写保护(向IWDG_KR写入 0X5555) IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 2)设置独立看门狗的预分频系数和重装载值。 void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置IWDG预分频值 void IWDG_SetReload(uint16_t Reload); //设置IWDG重装载值 通过设置预分频系数和重装载值我们就可以知道看门狗的喂狗时间(溢出时间)。 Tout=((4 × 2^prer) × rlr) /40 我们只要在溢出时间到来之前,向IWDG_KR写入0xaaaa,就不会导致看门狗复位。需要注意的是,看门狗的时钟不是准确的40kHZ,因此最好不要太晚喂狗。 3)重载计数值喂狗(向IWDG_KR写入 0XAAAA) IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载 IWDG 计数器 通过这句,将使 STM32 重新加载IWDG_RLR的值到看门狗计数器里面。即实现独立看门狗的喂狗操作。 4) 启动看门狗(向IWDG_KR写入 0XCCCC) IWDG_Enable(); //使能IWDG 需要注意的是,IWDG一旦启用,就不能再关闭,想要关闭就只能重启,因此不用的时候就不要去打开它。 通过以上四个步骤,我们就可以启用STM32的独立看门狗了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1646 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
993 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
692 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1611 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 06:49 , Processed in 0.791338 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号