logic.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "stm32f0xx_hal.h"
  2. #include "logic.h"
  3. #include "pwm_in.h"
  4. #include "gpio.h"
  5. #include "pwm_out.h"
  6. #define LED_ON HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
  7. #define LED_OFF HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
  8. static uint8_t step_number = 0;
  9. static IWDG_HandleTypeDef IwdgHandle;
  10. //
  11. void logic_main(void)
  12. {
  13. HAL_IWDG_Refresh(&IwdgHandle);
  14. if (get_button())
  15. {
  16. gpio_set_output(true);
  17. LED_ON;
  18. HAL_Delay(500);
  19. HAL_IWDG_Refresh(&IwdgHandle);
  20. LED_OFF;
  21. HAL_Delay(500);
  22. HAL_IWDG_Refresh(&IwdgHandle);
  23. logic_set_out_pwm();
  24. HAL_Delay(500);
  25. HAL_IWDG_Refresh(&IwdgHandle);
  26. gpio_set_output(false);
  27. tim_pwm_pulse_idle();
  28. set_button(false);
  29. }
  30. }
  31. //
  32. void logic_set_out_pwm(void)
  33. {
  34. switch (step_number)
  35. {
  36. case 0:
  37. tim_pwm_out_set_pulse(PWM_OUT_CH_1, 1300);
  38. break;
  39. case 1:
  40. tim_pwm_out_set_pulse(PWM_OUT_CH_2, 1300);
  41. break;
  42. case 2:
  43. tim_pwm_out_set_pulse(PWM_OUT_CH_1, 1850);
  44. break;
  45. case 3:
  46. tim_pwm_out_set_pulse(PWM_OUT_CH_2, 1850);
  47. break;
  48. default : break;
  49. }
  50. step_number = step_number == 3 ? 0 : step_number + 1;
  51. }
  52. //
  53. void wdt_init(void)
  54. {
  55. RCC_OscInitTypeDef RCC_OscInitStruct;
  56. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
  57. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  58. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  59. HAL_RCC_OscConfig(&RCC_OscInitStruct);
  60. IwdgHandle.Instance = IWDG;
  61. IwdgHandle.Init.Prescaler = 32;
  62. IwdgHandle.Init.Reload = 1000;
  63. IwdgHandle.Init.Window = IWDG_WINDOW_DISABLE;
  64. HAL_IWDG_Init(&IwdgHandle);
  65. }