YTM32B1MC03H0MLH ,看门狗,WDG,怎么设置时间都无效
-
fzh0907 使能了的,因为我是用demo改的。
int main(void)
{
/* USER CODE BEGIN 1 /
/ USER CODE END 1 /
Board_Init();
/ USER CODE BEGIN 2 /
/ Check whether the reset is caused by WDG. /
if (RCU->RSSR & RCU_RSSR_WDG_MASK)
{
PRINTF("System reset by WDG reset!\n");
/ Clear all reset flags. /
RCU->RSSR = RCU->RSSR;
}
else
{
PRINTF("Setup WDG and wait for WDG timeout!\n");
INT_SYS_InstallHandler(lpTMR0_IRQn, LPTMR0_TriggerIRQHandler, NULL);
/ Enable lptmr interrupt. /
INT_SYS_EnableIRQ(lpTMR0_IRQn);
/ Init wdg module. */
WDG_DRV_Init(0, &wdg_config0);/* Start lptmr timer. */ lpTMR_DRV_StartCounter(0); while (lptmr_isr_cnt < 3) { } /* Close lptmr timer. */ lpTMR_DRV_StopCounter(0); PRINTF("Stop feed and wait for WDG reset.\n"); } /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
}
static void Board_Init(void)
{
CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
UTILITY_PRINT_Init();
lpTMR_DRV_Init(0,&LPTMR_Config,false);
} -
就以不能分频来说, 那就是32K, 那为什么 .timeoutValue=(32*1000)*5, 不是5秒复位呢? 而且无论我怎么改,复位时间都是不变的。,
int main(void)
{
/* USER CODE BEGIN 1 /
/ USER CODE END 1 /
Board_Init();
/ USER CODE BEGIN 2 */PRINTF("Setup WDG and wait for WDG timeout!\n"); /* Init wdg module. */ WDG_DRV_Init(0, &wdg_config0); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
}
static void Board_Init(void)
{
CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
UTILITY_PRINT_Init();
lpTMR_DRV_Init(0,&LPTMR_Config,false);
} -
恭喜你发现了个bug
这个是因为 SDK LPO 的 INDEX 配置错误,也就是说你的 IPC 没有配置有效时钟。当前代码配置的是 reseved 的时钟,所以当 WDG 选择 IPC 时钟时,由于没有有效的时钟,WDG 配置失效,未工作。下个版本会修复该问题,当前可以在 WDG 初始化之前增加下述代码,让 IPC 配置正常的时钟
/* Disable WDG IPC at first */ IPC->CTRL[IPC_WDG0_INDEX] = 0; /* Select LPO as function clock and divider is 1 */ IPC->CTRL[IPC_WDG0_INDEX] = 0x401; ... WDG_DRV_Init(0, &wdg_config0);
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...