HA freertos 从powerdown模式下唤醒异常
-
使用YCT的生成的HA freertos增加gpio wku唤醒powerdown,发现程序并没有进入复位流程重新执行main程序.没有打印Build信息
void prvPrintTaskB(void *pvParameters) { (void)pvParameters; while (1) { PRINTF("POWERDOWN_MODE \r\n"); POWER_SYS_SetMode(POWERDOWN_MODE, POWER_MANAGER_POLICY_AGREEMENT); vTaskDelay(2000UL); } } int main(void) { /* USER CODE BEGIN 1 */ status_t status = STATUS_SUCCESS; volatile uint32_t temp = 0xFFFFFF; /* USER CODE END 1 */ Board_Init(); PRINTF("1\r\n"); /* USER CODE BEGIN 2 */ PRINTF("main Build %s %s\r\n", __DATE__, __TIME__); WKU_DRV_SetPinIsolation(false); WKU_DRV_InitReset(WKU_INST, &wkup_resetConfig0); WKU_DRV_InitPinWakeup(WKU_INST, WKP_PIN_CH_NUM0, wkup_pinsConfig0); PRINTF("2\r\n"); while(temp--); WKU_DRV_SetPinIsolation(true); PRINTF("Freertos GPIO wku form pd Demo!\r\n"); PRINTF("3\r\n"); xTaskCreate(prvPrintTaskA, "TaskA", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL); xTaskCreate(prvPrintTaskB, "TaskB", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL); /* Create the software timer that is responsible for turning off the LED if the button is not pushed within 5000ms, as described at the top of this file. */ xPrintTimer = xTimerCreate("PrintTimer", /* A text name, purely to help debugging. */ 5000UL, /* The timer period, in this case 5000ms (5s). */ pdTRUE, /* This is a one shot timer, so xAutoReload is set to pdFALSE. */ (void *)0, /* The ID is not used, so can be set to anything. */ prvPrintTimerCallback /* The callback function that switches the LED off. */ ); xTimerStart(xPrintTimer, 0); /* Start the tasks and timer running. */ vTaskStartScheduler(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if (status != STATUS_SUCCESS) { break; } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } return status; /* USER CODE END 3 */ }
后面测试发现如果我注释掉WKU_DRV_SetPinIsolation的两句配置后能正常从main进入,如果我把WKU_DRV_SetPinIsolation(true); 加到 POWER_SYS_SetMode前面现象同上
//WKU_DRV_SetPinIsolation(false); //WKU_DRV_SetPinIsolation(true);
看到Power_Pin_Wakeup_From_Powerdown_Mode_Demo也有这个操作
WKU_DRV_SetPinIsolation API我的理解是保持引脚状态,为啥会影响从PD唤醒的程序的执行的位置
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...