2.嵌入式系统使用WWDG窗口看门狗模块监视用户程序运行,假设看门狗的喂狗时间为10ms,PCLK1频率为36MHz,WDGTB[1:0]=11b。请计算看门狗的定时计数值,并写出看门狗的初始化函数(注:使用寄存器方式程序)
时间: 2024-02-01 19:13:58 浏览: 27
根据WWDG的计数公式:
$T_{WWDG} = \frac{2^{WDGTB[1:0]+7} * (W[6:0]+1)}{PCLK1}$
其中,$T_{WWDG}$为WWDG的计数时间,$W[6:0]$为WWDG的计数值。根据题目所给条件,可以得到:
$T_{WWDG} = \frac{2^{11} * (127+1)}{36MHz} = 0.071s$
将$T_{WWDG}$转换成喂狗的时间,即可得到喂狗的时间间隔为:
$T_{feed} = T_{WWDG} / 4096 = 0.071s / 4096 = 17.3ms$
因此,喂狗的时间间隔为17.3ms。
以下是看门狗的初始化函数:
```
void WWDG_Init(void)
{
/* 使能看门狗时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
/* 配置看门狗分频系数和计数值 */
WWDG_SetPrescaler(WDGTB_11); // 设置分频系数为2^8
WWDG_SetWindowValue(127); // 设置计数值为127
/* 使能看门狗和看门狗中断 */
WWDG_EnableIT(); // 使能看门狗中断
WWDG_Enable(127); // 使能看门狗,并设置计数值为127
}
```
相关问题
2.嵌入式系统使用WWDG窗口看门狗模块监视用户程序运行,假设看门狗的喂狗时间为10ms,PCLK1频率为36MHz,WDGTB[1:0]=11b。请计算看门狗的定时计数值,并写出看门狗的初始化函数(注:使用寄存器方式程序)
根据WWDG的计数公式:
$T_{WWDG} = \frac{2^{WDGTB} * (W[6:0] + 1)}{PCLK1}$
其中,$T_{WWDG}$ 为WWDG的计数时间,$WDGTB$ 为分频系数,$W[6:0]$ 为计数器的初始值,$PCLK1$ 为APB1总线时钟频率。
根据题目所给条件:$WDGTB[1:0]=11b$,$PCLK1=36MHz$,喂狗时间为10ms,代入公式可得:
$10ms = \frac{2^{3} * (W[6:0] + 1)}{36MHz}$
解得 $W[6:0] = 187$。
因此,看门狗的定时计数值为187,下面是看门狗的初始化函数:
```c
void WWDG_Init(void)
{
RCC->APB1ENR |= RCC_APB1ENR_WWDGEN; // 使能WWDG时钟
WWDG->CFR = WWDG_CFR_WDGTB_1 | WWDG_CFR_WDGTB_0 | 0x7F; // 设置分频系数为11b,计数器初始值为0x7F
WWDG->CR = WWDG_CR_WDGA; // 使能看门狗
}
```
STM32f407内部看门狗的初始化和喂狗代码
STM32F407 内部看门狗的初始化和喂狗代码可以参考以下示例代码:
```
#include "stm32f4xx.h"
// 看门狗初始化
void WDG_Init(uint32_t time)
{
// 使能看门狗时钟
RCC->APB1ENR |= RCC_APB1ENR_WWDGEN;
// 设置看门狗分频器,采用 PCLK1 / 4096
IWDG->PR = 6;
// 设置看门狗计数器,计数器值大于等于重载值时会发生看门狗复位
IWDG->RLR = time;
// 使能看门狗
IWDG->KR = 0xAAAA;
}
// 喂狗函数
void WDG_Feed(void)
{
// 重置看门狗计数器
IWDG->KR = 0xAAAA;
}
```
在上述代码中,`WDG_Init`函数用于进行看门狗的初始化,其中`time`参数表示看门狗的计数时间,单位为ms。`WDG_Feed`函数用于喂狗,在程序中定期调用该函数可以防止看门狗复位。
需要注意的是,看门狗计数器的值必须在重载寄存器的值范围内,否则看门狗会在计数器溢出时触发,导致系统复位。同时,在喂狗时也需要注意,喂狗的时间间隔不能太长,否则看门狗会超时而导致系统复位。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)