GD32F4xx系列的GPIO基本输入输出配置:
我这里以GPIOD GPIO_Pin_4为例:
1,添加RCU时钟外设库函数驱动和GPIO外设库函数驱动文件。
2,按照如下步骤初始化对应的GPIO。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18//输出模式: 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输入输出函数封装函数:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74Int32 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系列内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复