24M主频的STC8HK08看门狗设置256分频,一秒甚至500毫秒都会复位,用的40ms才行
理论上溢出时间是4秒左右,我不管是1s还是500ms喂一次都不会触发喂狗才对本帖最后由 _奶咖君_ 于 2024-7-10 09:35 编辑
感觉可能是用法有问题,,,,,,下载的时候是否勾选了硬件开启看门狗? _奶咖君_ 发表于 2024-7-10 09:34
感觉可能是用法有问题,,,
看门狗的用的不是主频,是一个内部的时钟,,
还有一件事,,下载的时候是否勾 ...
看门狗好像用的就是主频吧,我记得之前有看过相关的解释,下载的时候没有勾选硬件开启 Mike_zz 发表于 2024-7-10 09:37
看门狗好像用的就是主频吧,我记得之前有看过相关的解释,下载的时候没有勾选硬件开启 ...
记错了,,,看了一眼手册 。想起来了 Mike_zz 发表于 2024-7-10 09:37
看门狗好像用的就是主频吧,我记得之前有看过相关的解释,下载的时候没有勾选硬件开启 ...
感觉是分频系数有问题,,在检查你的代码吧 _奶咖君_ 发表于 2024-7-10 09:42
感觉是分频系数有问题,,在检查你的代码吧
WDT_InitTypeDef WDT_InitStructure;
// Configure the WDT to be enabled or disabled
WDT_InitStructure.WDT_Enable = ENABLE; // Interrupt enable ENABLE or DISABLE
// Configure the WDT to stop counting during CPU idle
WDT_InitStructure.WDT_IDLE_Mode = WDT_IDLE_STOP; // IDLE mode Indicates whether to stop counting WDT_IDLE_STOP,WDT_IDLE_RUN
// Set the clock division factor of the WDT, determining the timeout period
WDT_InitStructure.WDT_PS = WDT_SCALE_256; // Watchdog timer clock frequency division factor WDT_SCALE_2,WDT_SCALE_4,WDT_SCALE_8,WDT_SCALE_16,WDT_SCALE_32,WDT_SCALE_64,WDT_SCALE_128,WDT_SCALE_256
// Initialize the WDT with the configured parameters
WDT_Inilize(&WDT_InitStructure); // initialize
用的库函数开发,就一个分频系数改了,外界一个任务在定时跑喂狗 本帖最后由 _奶咖君_ 于 2024-7-10 10:31 编辑
Mike_zz 发表于 2024-7-10 10:01
WDT_InitTypeDef WDT_InitStructure;
// Configure the WDT to be enabled or disabled
喂狗呢?感觉应该不会 ,库函数啊,喂狗的时候吧分频值改了?
喂狗的源代码看过么?
_奶咖君_ 发表于 2024-7-10 10:29
喂狗呢?感觉应该不会 ,库函数啊,喂狗的时候吧分频值改了?
喂狗的源代码看过么?
这个提醒到我了 我看了一下喂狗的底层,有关于分频的定义,前面没注意这块默认是16分频,现在改了,应该是这个问题导致的,我验证一下
void WDT_Feed (void)
{
WDT_CONTR = (D_EN_WDT + D_CLR_WDT + D_WDT_SCALE_256); // feed the dog
} 这库函数代码写的真不咋地,,{:4_178:} 慎用吧
页:
[1]