Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. void MX_GPIO_Deinit()
  2. {
  3. GPIO_InitTypeDef GPIO_InitStruct;
  4. __HAL_RCC_GPIOA_CLK_ENABLE();
  5. __HAL_RCC_GPIOB_CLK_ENABLE();
  6. __HAL_RCC_GPIOC_CLK_ENABLE();
  7. __HAL_RCC_GPIOH_CLK_ENABLE();
  8. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  9. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  10. GPIO_InitStruct.Pull = GPIO_NOPULL;
  11. GPIO_InitStruct.Pin = GPIO_PIN_All;
  12. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  13. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  14. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  15. HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
  16. /* Disable GPIOs clock */
  17. __HAL_RCC_GPIOA_CLK_DISABLE();
  18. __HAL_RCC_GPIOB_CLK_DISABLE();
  19. __HAL_RCC_GPIOC_CLK_DISABLE();
  20. __HAL_RCC_GPIOH_CLK_DISABLE();
  21. }
  22.  
  23. void stopMode(void)
  24. {
  25. HAL_SuspendTick();
  26. MX_GPIO_Deinit();
  27. __HAL_RCC_PWR_CLK_ENABLE();
  28. HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1);
  29.  
  30. GPIO_InitTypeDef GPIO_InitStruct;
  31. __HAL_RCC_GPIOA_CLK_ENABLE();
  32. GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
  33. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  34. GPIO_InitStruct.Pull = GPIO_PULLUP;
  35. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  36. GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
  37. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  38. HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
  39. }
  40.  
  41. void resumeStopMode(void)
  42. {
  43. SystemClock_Config();
  44. HAL_ResumeTick();
  45. MX_GPIO_Init();
  46.  
  47. HAL_UART_MspInit(&huart4);
  48. HAL_I2C_MspInit(&hi2c2);
  49. HAL_DCMI_MspInit(&hdma_dcmi);
  50. HAL_TIM_MspPostInit(&htim1);
  51. MX_DMA_Init();
  52. MX_UART4_Init();
  53. MX_I2C2_Init();
  54. MX_DCMI_Init();
  55. MX_TIM1_Init();
  56.  
  57. HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
  58. }
  59.  
  60. int getChar()
  61. {
  62. uint8_t InputData = 0;
  63. TimmingDelay = 50000;
  64. while (TimmingDelay !=0)
  65. {
  66. if (__HAL_UART_GET_FLAG(&huart4, UART_FLAG_ORE))
  67. __HAL_UART_CLEAR_OREFLAG(&huart4);
  68.  
  69. if (__HAL_UART_GET_FLAG(&huart4, UART_FLAG_RXNE))
  70. {
  71. InputData = huart4.Instance->DR & 0x1FF;
  72. return InputData;
  73. }
  74. }
  75. return -1;
  76. }
  77.  
  78. void main(void)
  79. {
  80. stopMode()
  81. resumeStopMode() /* woken up by uart interrupt*/
  82. int receivedByte = 0;
  83. receivedByte = getChar() /* This line doesn't work after waking it goes into stop mode */
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement