查看: 891|回复: 12
收起左侧

GD32与STM32 GPIO操作对比

[复制链接]

208

主题

2135

帖子

6455

积分

高级工程师

 楼主| 发表于 2015-5-20 16:03 | 显示全部楼层 |返回版面|阅读模式
STM32操作GPIO的初始化例程
  1. void LED_GPIO_Config(void)
  2. {               
  3.                 /*定义一个GPIO_InitTypeDef类型的结构体*/
  4.                 GPIO_InitTypeDef GPIO_InitStructure;

  5.                 /*开启GPIOB和GPIOF的外设时钟*/
  6.                 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);

  7.                 /*选择要控制的GPIOB引脚*/                                                                                                                          
  8.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;       

  9.                 /*设置引脚模式为通用推挽输出*/
  10.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   

  11.                 /*设置引脚速率为50MHz */   
  12.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  13.                 /*调用库函数,初始化GPIOB0*/
  14.                 GPIO_Init(GPIOB, &GPIO_InitStructure);       
  15.                
  16.                 /*选择要控制的GPIOF引脚*/                                                                                                                          
  17.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

  18.                 /*调用库函数,初始化GPIOF7*/
  19.                 GPIO_Init(GPIOF, &GPIO_InitStructure);
  20.                
  21.                 /*选择要控制的GPIOF引脚*/                                                                                                                          
  22.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

  23.                 /*调用库函数,初始化GPIOF7*/
  24.                 GPIO_Init(GPIOF, &GPIO_InitStructure);                          

  25.                 /* 关闭所有led灯        */
  26.                 GPIO_SetBits(GPIOB, GPIO_Pin_0);
  27.                
  28.                 /* 关闭所有led灯        */
  29.                 GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);         
  30. }
复制代码


208

主题

2135

帖子

6455

积分

高级工程师

 楼主| 发表于 2015-5-20 16:04 | 显示全部楼层 |返回版面
GD32操作IO的初始化例程
  1. void GPIO_Configuration(void)
  2. {   
  3.     GPIO_InitPara GPIO_InitStructure;
  4.     RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC |RCC_APB2PERIPH_GPIOE,ENABLE);

  5.     GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_2;
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
  7.     GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
  8.     GPIO_Init(GPIOC,&GPIO_InitStructure);

  9.     GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1;
  10.     GPIO_Init(GPIOE,&GPIO_InitStructure);
  11. }
复制代码

208

主题

2135

帖子

6455

积分

高级工程师

 楼主| 发表于 2015-5-20 16:15 | 显示全部楼层 |返回版面
仔细分析,发现两者GPIO的初始化大同小益,只是在个别函数上有出入
                /*定义一个GPIO_InitTypeDef类型的结构体*/
STM32:    GPIO_InitTypeDef GPIO_InitStructure;
GD32  :       GPIO_InitPara GPIO_InitStructure

208

主题

2135

帖子

6455

积分

高级工程师

 楼主| 发表于 2015-5-20 16:16 | 显示全部楼层 |返回版面
         /*开启GPIOB和GPIOF的外设时钟*/
STM32:   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
GD32:     RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC |RCC_APB2PERIPH_GPIOE,ENABLE);

5

主题

68

帖子

204

积分

中级技术员

发表于 2015-6-21 09:20 | 显示全部楼层 |返回版面
如果要我说,GD的极点修改,使的名称上更符合国人的习惯,更容易理解库函数的作用。

24

主题

1420

帖子

4261

积分

中级工程师

发表于 2015-6-21 21:07 | 显示全部楼层 |返回版面
sunmeat 发表于 2015-5-20 16:16
/*开启GPIOB和GPIOF的外设时钟*/
STM32:   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_AP ...

上边这些不同点的都是些细节性的,需要注意的。

208

主题

2135

帖子

6455

积分

高级工程师

 楼主| 发表于 2015-6-26 09:15 | 显示全部楼层 |返回版面
tongbu2015 发表于 2015-6-21 21:07
上边这些不同点的都是些细节性的,需要注意的。

基本上照猫画虎就可以了,暂时没发现别的相似的但不同的函数。
     

17

主题

284

帖子

875

积分

高级技术员

发表于 2017-8-10 09:38 | 显示全部楼层 |返回版面
这个是常规库吧,ST用新的HAL库,移植到GD是不是就麻烦很多了?

74

主题

3890

帖子

1万

积分

资深工程师

发表于 2017-8-15 17:25 | 显示全部楼层 |返回版面
sunmeat 发表于 2015-5-20 16:15
仔细分析,发现两者GPIO的初始化大同小益,只是在个别函数上有出入
                /*定义一个GPIO_InitTypeDef类型的结构 ...

这个定义的是可以在提供的库中进行修改的。

26

主题

1387

帖子

4165

积分

中级工程师

发表于 2017-8-26 11:15 | 显示全部楼层 |返回版面
这些不通电的只是在路函数的设计上会不一样的

24

主题

1420

帖子

4261

积分

中级工程师

发表于 2017-8-26 22:16 | 显示全部楼层 |返回版面
这也没看出有啥不一样的地方的呀

28

主题

1392

帖子

4186

积分

中级工程师

发表于 2017-8-27 09:14 | 显示全部楼层 |返回版面
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE)   开启外设时钟
     

5

主题

14

帖子

36

积分

实习生

发表于 2017-9-5 15:42 | 显示全部楼层 |返回版面
能不能加个QQ请教一下啊,大哥,我在做GD32开发我QQ2070821507
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

分享 快速回复 返回顶部 返回列表