Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MX_GPIO_Deinit()
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOH_CLK_ENABLE();
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Pin = GPIO_PIN_All;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
- /* Disable GPIOs clock */
- __HAL_RCC_GPIOA_CLK_DISABLE();
- __HAL_RCC_GPIOB_CLK_DISABLE();
- __HAL_RCC_GPIOC_CLK_DISABLE();
- __HAL_RCC_GPIOH_CLK_DISABLE();
- }
- void stopMode(void)
- {
- HAL_SuspendTick();
- MX_GPIO_Deinit();
- __HAL_RCC_PWR_CLK_ENABLE();
- HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1);
- GPIO_InitTypeDef GPIO_InitStruct;
- __HAL_RCC_GPIOA_CLK_ENABLE();
- GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
- }
- void resumeStopMode(void)
- {
- SystemClock_Config();
- HAL_ResumeTick();
- MX_GPIO_Init();
- HAL_UART_MspInit(&huart4);
- HAL_I2C_MspInit(&hi2c2);
- HAL_DCMI_MspInit(&hdma_dcmi);
- HAL_TIM_MspPostInit(&htim1);
- MX_DMA_Init();
- MX_UART4_Init();
- MX_I2C2_Init();
- MX_DCMI_Init();
- MX_TIM1_Init();
- HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
- }
- int getChar()
- {
- uint8_t InputData = 0;
- TimmingDelay = 50000;
- while (TimmingDelay !=0)
- {
- if (__HAL_UART_GET_FLAG(&huart4, UART_FLAG_ORE))
- __HAL_UART_CLEAR_OREFLAG(&huart4);
- if (__HAL_UART_GET_FLAG(&huart4, UART_FLAG_RXNE))
- {
- InputData = huart4.Instance->DR & 0x1FF;
- return InputData;
- }
- }
- return -1;
- }
- void main(void)
- {
- stopMode()
- resumeStopMode() /* woken up by uart interrupt*/
- int receivedByte = 0;
- receivedByte = getChar() /* This line doesn't work after waking it goes into stop mode */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement