| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*!
- \file main.c
- \brief deepsleep wakeup through exti interrupt
- */
- /*
- Copyright (C) 2017 GigaDevice
- 2017-06-06, V1.0.0, firmware for GD32F3x0
- */
- #include "gd32f3x0.h"
- #include "gd32f3x0_eval.h"
- #include "systick.h"
- #include "main.h"
- void led_config(void);
- /*!
- \brief main function
- \param[in] none
- \param[out] none
- \retval none
- */
- int main(void)
- {
- /* systick config */
- systick_config();
- /* led config */
- led_config();
- /* clock enable */
- rcu_periph_clock_enable(RCU_PMU);
- /* wakeup key config */
- gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
- /* tamper key EXTI config */
- gd_eval_key_init(KEY_TAMPER, KEY_MODE_EXTI);
- /* press wakeup key to enter deepsleep mode and use tamper key to generate an exti interrupt to wakeup mcu */
- while(1){
- if(SET == gpio_input_bit_get(WAKEUP_KEY_GPIO_PORT, WAKEUP_KEY_PIN))
- pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);
- }
- }
- /*!
- \brief toggle the led
- \param[in] none
- \param[out] none
- \retval none
- */
- void led_spark(void)
- {
- static __IO uint32_t timingdelaylocal = 0;
- if (timingdelaylocal != 0x00){
- /* all the leds on */
- if(timingdelaylocal < 200){
- gd_eval_led_on(LED1);
- gd_eval_led_on(LED2);
- gd_eval_led_on(LED3);
- gd_eval_led_on(LED4);
- }else{
- /* all the leds off */
- gd_eval_led_off(LED1);
- gd_eval_led_off(LED2);
- gd_eval_led_off(LED3);
- gd_eval_led_off(LED4);
- }
- timingdelaylocal--;
- }else{
- timingdelaylocal = 400;
- }
- }
- /*!
- \brief led config
- \param[in] none
- \param[out] none
- \retval none
- */
- void led_config(void)
- {
- gd_eval_led_init(LED1);
- gd_eval_led_init(LED2);
- gd_eval_led_init(LED3);
- gd_eval_led_init(LED4);
- }
|