01----GD32E103RBT6----GPIO测试代码[测试通过]

bsp_gpio.h

#ifndef __BSP_GPIO_H
#define __BSP_GPIO_H

#include "gd32e10x.h"

/*绿灯*/
#define LED_GREEN_GPIO_PORT      GPIOC
#define LED_GREEN_GPIO_CLK       RCU_GPIOC
#define LED_GREEN_GPIO_PIN       GPIO_PIN_15

/*红灯*/
#define LED_RED_GPIO_PORT        GPIOB
#define LED_RED_GPIO_CLK         RCU_GPIOB
#define LED_RED_GPIO_PIN         GPIO_PIN_9

/*SW1*/
#define SW1_GPIO_CLK     RCU_GPIOC 
#define SW1_GPIO_PORT    GPIOC 
#define SW1_GPIO_PIN     GPIO_PIN_11

/*定义控制绿灯的宏*/
#define LED_GREEN_ON     gpio_bit_reset(LED_GREEN_GPIO_PORT,LED_GREEN_GPIO_PIN)
#define LED_GREEN_OFF     gpio_bit_set(LED_GREEN_GPIO_PORT,LED_GREEN_GPIO_PIN)
#define LED_GREEN_TOGGLE    GPIO_OCTL(LED_GREEN_GPIO_PORT)^=LED_GREEN_GPIO_PIN

/*定义控制红灯的宏*/
#define LED_RED_ON     gpio_bit_reset(LED_RED_GPIO_PORT,LED_RED_GPIO_PIN)
#define LED_RED_OFF     gpio_bit_set(LED_RED_GPIO_PORT,LED_RED_GPIO_PIN)
#define LED_RED_TOGGLE    GPIO_OCTL(LED_RED_GPIO_PORT)^=LED_RED_GPIO_PIN




void LED_GREEN_GPIO_Config(void);
void LED_RED_GPIO_Config(void);
void Delay(uint32_t nCount);
void SW1_GPIO_Config(void);

#endif

bsp_gpio.c

#include  "bsp_gpio.h"



/**
 *  对绿灯所在的GPIO的参数进行初始化
 */
void LED_GREEN_GPIO_Config(void)
{
	rcu_periph_clock_enable(LED_GREEN_GPIO_CLK);
	gpio_init(LED_GREEN_GPIO_PORT, GPIO_MODE_OUT_OD, GPIO_OSPEED_50MHZ, LED_GREEN_GPIO_PIN);
}



/**
 *  对红灯所在的GPIO的参数进行初始化
 */
void LED_RED_GPIO_Config(void)
{
	rcu_periph_clock_enable(LED_RED_GPIO_CLK);
	gpio_init(LED_RED_GPIO_PORT, GPIO_MODE_OUT_OD, GPIO_OSPEED_50MHZ, LED_RED_GPIO_PIN);
}


/**
 *  简陋的软件延时函数
 */
void Delay(uint32_t nCount)
{
	for(;nCount!=0;nCount--);
}



/**
 *  对SW1所在的GPIO的参数进行初始化
 */
void SW1_GPIO_Config(void)
{
	rcu_periph_clock_enable(SW1_GPIO_CLK);
	gpio_init(SW1_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, SW1_GPIO_PIN);
}

main.c

void test_gpio(void)
{
	LED_GREEN_GPIO_Config();
	LED_GREEN_ON;
	LED_RED_GPIO_Config();
	LED_RED_ON;
	SW1_GPIO_Config();
	while(1)
	{
		while(gpio_input_bit_get(SW1_GPIO_PORT,SW1_GPIO_PIN)!=SET)
	{
		LED_GREEN_TOGGLE;
		LED_RED_TOGGLE;
		Delay(0x0FFFFF); 
	}
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值