TA的每日心情 | 衰 2017-11-27 16:33 |
---|
签到天数: 7 天 连续签到: 1 天 [LV.3]偶尔看看II
|
本帖最后由 何昌昕 于 2017-5-25 21:41 编辑
- #include "gpio.h"
- void LED_Init(void)
- {
- //使能时钟
- rcu_periph_clock_enable(RCU_GPIOB);
- rcu_periph_clock_enable(RCU_GPIOD);
- //设置模式
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_3|GPIO_PIN_4);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_3|GPIO_PIN_4);
-
- gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_7);
- gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
- //清零
- GPIO_BC(GPIOB) = GPIO_PIN_3|GPIO_PIN_4;
- GPIO_BC(GPIOD) = GPIO_PIN_7;
- }
- void LED_Set(uint8_t state)
- {
- if(state)GPIO_BOP(GPIOB) = GPIO_PIN_3|GPIO_PIN_4;
- else GPIO_BC(GPIOB) = GPIO_PIN_3|GPIO_PIN_4;
- }
- void LED_Troggle(void)
- {
- GPIO_TG(GPIOB) = GPIO_PIN_3|GPIO_PIN_4;
- GPIO_TG(GPIOD) = GPIO_PIN_7;
- }
- void KEY_Init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_GPIOE);
- rcu_periph_clock_enable(RCU_SYSCFG);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_0);
- gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_0|GPIO_PIN_1);
- }
- void KEY_Init_EXTI(void)
- {
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_SYSCFG);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_0);
- nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U);
- syscfg_exti_line_config(EXTI_SOURCE_GPIOC,EXTI_SOURCE_PIN13);
- exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
- exti_interrupt_flag_clear(EXTI_13);
- }
复制代码
- #ifndef GPIO_H
- #define GPIO_H
- #include "gd32f4xx_gpio.h"
- #include "common.h"
- void LED_Init(void);
- void LED_Set(uint8_t state);
- void LED_Troggle(void);
- void KEY_Init(void);
- void KEY_Init_EXTI(void);
- #define KEY1_State gpio_input_bit_get(GPIOA, GPIO_PIN_0)
- #define KEY2_State gpio_input_bit_get(GPIOE, GPIO_PIN_1)
- #define KEY3_State gpio_input_bit_get(GPIOE, GPIO_PIN_0)
- #endif
复制代码 单片机不足的是每次下载程序后不能自动复位,需要手动复位。- int main(void)
- {
- systick_config();
-
- UART_Init(USART0,115200);
- LED_Init();
- KEY_Init();
- while(1)
- {
- LED_Troggle();
- delay_1ms(200);
- printf("综合测试实验\r\n");
- printf("%d %d %d\r\n",KEY1_State,KEY2_State,KEY3_State);
- }
复制代码 |
|