BASIC4MCU | 질문게시판 | USB host하고 Stop모드를 같이 쓰려는데
페이지 정보
작성자 라칸 작성일2024-09-12 17:47 조회612회 댓글1건본문
STOP모드라고 USB host를 같이 좀 쓰려고 하는데 RTOS에서 사용하니까 중간에 클럭 오류가 생겨서인지 Stop에서 안 깨어나서
RTOS 없이 프로그램을 만들려고 하는데
USB host만 썼을때 동작해서 LED 켜지는거 확인하고 Stop모드만 사용했을때 일정시간 뒤에 깨어나는거 확인하고
2개를 같이 쓰려고 아래와 같이 만들었는데
Stop모드는 일단 동작하는데 USB host는 동작하지 않네요
혹시 왜 그런지 가르쳐주실수 있으신가요?
USB host만 쓸때도 HAL_delay만 추가해도 USB가 안되는데
void vStopMode(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
/* Suspend SysTick */
HAL_SuspendTick();
/* Enable Power Peripheral */
__HAL_RCC_PWR_CLK_ENABLE();
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 5, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
/* STOP Mode */
//HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
/* Resume SysTick When System Wake-up */
HAL_ResumeTick();
/* PLL Clock Recovery */
SystemClock_Config();
__HAL_RCC_PWR_CLK_ENABLE();
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
// USB 호스트 초기화
MX_USB_HOST_Init();
// 전력 안정화를 위해 잠시 대기
HAL_Delay(100); // 100ms 정도 대기
// 필요한 다른 초기화 코드들
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
static uint32_t debounce = 0;
static uint32_t now = 0;
if(GPIO_Pin == GPIO_PIN_0)
{
/* anti-chattering */
now = HAL_GetTick();
if(now - debounce < 200) return;
debounce = HAL_GetTick();
}
}
while (1)
{
/* USER CODE END WHILE */
MX_USB_HOST_Process();
/* USER CODE BEGIN 3 */
if (Appli_state == APPLICATION_READY)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);
}
vStopMode();
}
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); // Clear wake-up flag if necessary
}
설정은 아래와 같습니다
댓글 1
조회수 612master님의 댓글
master 작성일제가 RTOS에 관심이 없어서 도움을 드리지 못하겠습니다.