| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*!
- \file main.c
- \brief CMP output timer input capture
- */
- /*
- Copyright (C) 2017 GigaDevice
- 2017-06-06, V1.0.0, firmware for GD32F3x0
- */
- #include "gd32f3x0.h"
- #include <stdio.h>
- #include "gd32f3x0_eval.h"
- void rcu_config(void);
- void gpio_config(void);
- void timer_config(void);
- /*!
- \brief main function
- \param[in] none
- \param[out] none
- \retval none
- */
- int main(void)
- {
- /* configure RCU */
- rcu_config();
-
- /* configure GPIO */
- gpio_config();
-
- /* configure leds */
- gd_eval_led_init(LED3);
-
- /* configure comparator channel0 */
- cmp_mode_init(CMP0, CMP_VERYLOWSPEED, CMP_1_4VREFINT, CMP_HYSTERESIS_NO);
- cmp_output_init(CMP0, CMP_OUTPUT_TIMER1IC3, CMP_OUTPUT_POLARITY_NOINVERTED);
-
- /* configure TIMER */
- timer_config();
-
- /* enable comparator channel0 */
- cmp_enable(CMP0);
- while(1);
- }
- /*!
- \brief configure RCU
- \param[in] none
- \param[out] none
- \retval none
- */
- void rcu_config(void)
- {
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_GPIOB);
- rcu_periph_clock_enable(RCU_GPIOC);
- rcu_periph_clock_enable(RCU_TIMER1);
- rcu_periph_clock_enable(RCU_CFGCMP);
- }
- /*!
- \brief configure GPIO
- \param[in] none
- \param[out] none
- \retval none
- */
- void gpio_config(void)
- {
- /* configure PB11 */
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_11) ;
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_11);
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_11);
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_1) ;
- gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_PULLUP, GPIO_PIN_1);
- }
- /*!
- \brief configure TIMER
- \param[in] none
- \param[out] none
- \retval none
- */
- void timer_config(void)
- {
- /* initialize TIMER1 */
- timer_parameter_struct timer_init_parameter;
- timer_init_parameter.prescaler = 0;
- timer_init_parameter.counterdirection = TIMER_COUNTER_UP;
- timer_init_parameter.period = 65535;
- timer_init_parameter.clockdivision = TIMER_CKDIV_DIV1;
-
- timer_init(TIMER1, &timer_init_parameter);
-
- /* clear flag */
- timer_flag_clear(TIMER1, TIMER_FLAG_UP);
-
- nvic_irq_enable(TIMER1_IRQn, 0, 0);
-
- /* reset TIMER1 interrupt flag register */
- TIMER_INTF(TIMER1) = 0;
-
- timer_interrupt_enable(TIMER1, TIMER_INT_CH3);
-
- /* enable TIMER1 counter */
- timer_enable(TIMER1);
- }
|