main.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*!
  2. \file main.c
  3. \brief deepsleep wakeup through exti interrupt
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-06-06, V1.0.0, firmware for GD32F3x0
  8. */
  9. #include "gd32f3x0.h"
  10. #include "gd32f3x0_eval.h"
  11. #include "systick.h"
  12. #include "main.h"
  13. void led_config(void);
  14. /*!
  15. \brief main function
  16. \param[in] none
  17. \param[out] none
  18. \retval none
  19. */
  20. int main(void)
  21. {
  22. /* systick config */
  23. systick_config();
  24. /* led config */
  25. led_config();
  26. /* clock enable */
  27. rcu_periph_clock_enable(RCU_PMU);
  28. /* wakeup key config */
  29. gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
  30. /* tamper key EXTI config */
  31. gd_eval_key_init(KEY_TAMPER, KEY_MODE_EXTI);
  32. /* press wakeup key to enter deepsleep mode and use tamper key to generate an exti interrupt to wakeup mcu */
  33. while(1){
  34. if(SET == gpio_input_bit_get(WAKEUP_KEY_GPIO_PORT, WAKEUP_KEY_PIN))
  35. pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);
  36. }
  37. }
  38. /*!
  39. \brief toggle the led
  40. \param[in] none
  41. \param[out] none
  42. \retval none
  43. */
  44. void led_spark(void)
  45. {
  46. static __IO uint32_t timingdelaylocal = 0;
  47. if (timingdelaylocal != 0x00){
  48. /* all the leds on */
  49. if(timingdelaylocal < 200){
  50. gd_eval_led_on(LED1);
  51. gd_eval_led_on(LED2);
  52. gd_eval_led_on(LED3);
  53. gd_eval_led_on(LED4);
  54. }else{
  55. /* all the leds off */
  56. gd_eval_led_off(LED1);
  57. gd_eval_led_off(LED2);
  58. gd_eval_led_off(LED3);
  59. gd_eval_led_off(LED4);
  60. }
  61. timingdelaylocal--;
  62. }else{
  63. timingdelaylocal = 400;
  64. }
  65. }
  66. /*!
  67. \brief led config
  68. \param[in] none
  69. \param[out] none
  70. \retval none
  71. */
  72. void led_config(void)
  73. {
  74. gd_eval_led_init(LED1);
  75. gd_eval_led_init(LED2);
  76. gd_eval_led_init(LED3);
  77. gd_eval_led_init(LED4);
  78. }