概述
GD32F4xx系列的GPIO基本输入输出配置:
我这里以GPIOD GPIO_Pin_4为例:
1,添加RCU时钟外设库函数驱动和GPIO外设库函数驱动文件。
2,按照如下步骤初始化对应的GPIO。
//输出模式:
rcu_periph_clock_enable(RCU_GPIOD);//初始化时钟
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_4);//设置为输出模式,上拉
(void)gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//推挽输出,50Mhz频率输出
(void)gpio_bit_reset(GPIOD, GPIO_PIN_4);//输出设置为0
(void)gpio_bit_set(GPIOD, GPIO_PIN_4);//输出设置为1
gpio_output_bit_get(GPIOD, GPIO_PIN_4);//输出模式GPIO状态获取
//输入模式:
rcu_periph_clock_enable(RCU_GPIOD);//初始化时钟
gpio_mode_set(GPIOD, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_4);//设置为输入模式,无上拉
gpio_input_bit_get(GPIOD, GPIO_PIN_4);//输入模式GPIO状态获取
3,以输出模式GPIO操作示例如下:
每500ms 转化一次状态,可以看到LED灯闪烁
说明GPIO操作功能正常。
附上一个总结的GPIO输入输出函数封装函数:
Int32 gpio_opt_gd32_init(UInt32 gpiox, UInt32 gpio_mode,UInt32 gpio_pin,UInt8 o_type,UInt32 speed,UInt32 pupd)
{
(void)gpio_opt_gd32_enable_clock(gpiox);
(void)gpio_mode_set(gpiox, gpio_mode, pupd, gpio_pin);
if(gpio_mode == GPIO_MODE_OUTPUT)
{
(void)gpio_output_options_set(gpiox, o_type, speed, gpio_pin);
(void)gpio_bit_reset(gpiox, gpio_pin);
}
return 0;
}
Int32 gpio_set_sate(UInt32 gpiox,UInt32 gpio_pin,UInt8 state)
{
if(state == 1)
{
(void)gpio_bit_set(gpiox, gpio_pin);
}
else
{
(void)gpio_bit_reset(gpiox, gpio_pin);
}
return 0;
}
FlagStatus gpio_get_sate(UInt32 gpiox,UInt32 gpio_pin,UInt32 gpio_mode)
{
if(gpio_mode == GPIO_MODE_OUTPUT)
{
return gpio_output_bit_get(gpiox, gpio_pin);
}
else
{
return gpio_input_bit_get(gpiox, gpio_pin);
}
}
Int32 gpio_opt_gd32_enable_clock(UInt32 gpiox)
{
switch(gpiox)
{
case GPIOA:
rcu_periph_clock_enable(RCU_GPIOA);
break;
case GPIOB:
rcu_periph_clock_enable(RCU_GPIOB);
break;
case GPIOC:
rcu_periph_clock_enable(RCU_GPIOC);
break;
case GPIOD:
rcu_periph_clock_enable(RCU_GPIOD);
break;
case GPIOE:
rcu_periph_clock_enable(RCU_GPIOE);
break;
case GPIOF:
rcu_periph_clock_enable(RCU_GPIOF);
break;
case GPIOG:
rcu_periph_clock_enable(RCU_GPIOG);
break;
case GPIOH:
rcu_periph_clock_enable(RCU_GPIOH);
break;
case GPIOI:
rcu_periph_clock_enable(RCU_GPIOI);
break;
default:
break;
}
return 0;
}
最后
以上就是整齐奇异果为你收集整理的GD32F4xx系列的GPIO基本输入输出配置的全部内容,希望文章能够帮你解决GD32F4xx系列的GPIO基本输入输出配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复