打印

GD32与STM32 GPIO操作对比

[复制链接]
2641|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2015-5-20 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32操作GPIO的初始化例程
void LED_GPIO_Config(void)
{               
                /*定义一个GPIO_InitTypeDef类型的结构体*/
                GPIO_InitTypeDef GPIO_InitStructure;

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

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

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

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

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

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

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

                /* 关闭所有led灯        */
                GPIO_SetBits(GPIOB, GPIO_Pin_0);
               
                /* 关闭所有led灯        */
                GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);         
}


沙发
sunmeat|  楼主 | 2015-5-20 16:04 | 只看该作者
GD32操作IO的初始化例程
void GPIO_Configuration(void)
{   
    GPIO_InitPara GPIO_InitStructure;
    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC |RCC_APB2PERIPH_GPIOE,ENABLE);

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

    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
}

使用特权

评论回复
板凳
sunmeat|  楼主 | 2015-5-20 16:15 | 只看该作者
仔细分析,发现两者GPIO的初始化大同小益,只是在个别函数上有出入
                /*定义一个GPIO_InitTypeDef类型的结构体*/
STM32:    GPIO_InitTypeDef GPIO_InitStructure;
GD32  :       GPIO_InitPara GPIO_InitStructure

使用特权

评论回复
地板
sunmeat|  楼主 | 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
蜕变吧| | 2015-6-21 09:20 | 只看该作者
如果要我说,GD的极点修改,使的名称上更符合国人的习惯,更容易理解库函数的作用。

使用特权

评论回复
6
tongbu2015| | 2015-6-21 21:07 | 只看该作者
sunmeat 发表于 2015-5-20 16:16
/*开启GPIOB和GPIOF的外设时钟*/
STM32:   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_AP ...

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

使用特权

评论回复
7
sunmeat|  楼主 | 2015-6-26 09:15 | 只看该作者
tongbu2015 发表于 2015-6-21 21:07
上边这些不同点的都是些细节性的,需要注意的。

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

使用特权

评论回复
8
fengrenjie| | 2017-8-10 09:38 | 只看该作者
这个是常规库吧,ST用新的HAL库,移植到GD是不是就麻烦很多了?

使用特权

评论回复
9
shenmu2012| | 2017-8-15 17:25 | 只看该作者
sunmeat 发表于 2015-5-20 16:15
仔细分析,发现两者GPIO的初始化大同小益,只是在个别函数上有出入
                /*定义一个GPIO_InitTypeDef类型的结构 ...

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

使用特权

评论回复
10
baimiaocun2015| | 2017-8-26 11:15 | 只看该作者
这些不通电的只是在路函数的设计上会不一样的

使用特权

评论回复
11
tongbu2015| | 2017-8-26 22:16 | 只看该作者
这也没看出有啥不一样的地方的呀

使用特权

评论回复
12
zhangbo1985| | 2017-8-27 09:14 | 只看该作者
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE)   开启外设时钟

使用特权

评论回复
13
风声112| | 2017-9-5 15:42 | 只看该作者
能不能加个QQ请教一下啊,大哥,我在做GD32开发我QQ2070821507

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝