打印
[N32G45x]

GPIO模块配置(一)【N32G45x】

[复制链接]
636|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Afanx|  楼主 | 2023-1-3 11:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Afanx 于 2023-1-3 15:10 编辑

N32MCU各系列的GPIO模块,N32G45x系列相较其他系列存在较大的差异。
本贴介绍N32G45x系列的GPIO配置,其他系列参考 :
GPIO模块配置(二)【除N32G45x外其他系列】https://bbs.21ic.com/icview-3276040-1-1.html

一、使能GPIO时钟
开启对应IO的时钟
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
如果作为外设的复用IO,需要开启AFIO时钟
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO , ENABLE);
二、配置GPIO模式
1、声明并初始化GPIO结构体变量
GPIO_InitType GPIO_InitStructure;
GPIO_InitStruct(&GPIO_InitStructure);
2、修改结构体变量参数
GPIO_InitStructure.Pin                = GPIO_PIN_8;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
3、初始化GPIO
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
N32G45x系列GPIO初始化配置只需要GPIO_Mode和GPIO_Speed参数。
其中GPIO Mode可配的参数如下(8种模式):
模拟输入
普通输入(浮空、上拉、下拉)
普通输出(推挽、开漏)
复用输出(推挽、开漏)
typedef enum
{
    GPIO_Mode_AIN         = 0x0,
    GPIO_Mode_IN_FLOATING = 0x04,
    GPIO_Mode_IPD         = 0x28,
    GPIO_Mode_IPU         = 0x48,
    GPIO_Mode_Out_OD      = 0x14,
    GPIO_Mode_Out_PP      = 0x10,
    GPIO_Mode_AF_OD       = 0x1C,
    GPIO_Mode_AF_PP       = 0x18
} GPIO_ModeType;
其中GPIO_Speed可配的参数如下:
typedef enum
{
    GPIO_INPUT      = 0,
    GPIO_Speed_2MHz = 1,
    GPIO_Speed_10MHz,
    GPIO_Speed_50MHz
} GPIO_SpeedType;
GPIO寄存器:
可以看到GPIO寄存器初始化时只需要配置[GPIOx_P(L/H)_CFG],在该寄存器中可以配置全部可能的8种模式。
因此调用 GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure); 实际上只修改了[GPIOx_P(L/H)_CFG]寄存器。

三、配置复用功能重映射
N32G45x的GPIO复用功能是按进行复用或重映射的。(复用映射组参考用户手册7.2.5章节)
调用以下库函数进行GPIO复用功能重映射
GPIO_ConfigPinRemap(GPIO_RMP_SPI1, ENABLE);
这里有一点需要注意的是开启GPIO复用功能模式后,存在默认映射,不一定需要开启重映射!

当默认连接不满足时,才使用GPIO_ConfigPinRemap()函数进行重映射。


比如当使用PC0、PC1作为I2C3的功能引脚时,只需要开启复用功能即可,不需要使用GPIO_ConfigPinRemap()重映射。
如果使用PF4、PF5作为I2C3的功能引脚,调用GPIO_ConfigPinRemap(GPIO_RMP2_I2C3, ENABLE)进行重映射。
如果使用PC4、PC5作为I2C3的功能引脚,调用GPIO_ConfigPinRemap(GPIO_RMP3_I2C3, ENABLE)进行重映射。

四、作为外功能引脚,该配置为推挽模式还是开漏模式、配置浮空输入还是上拉输入?
很多朋友不清楚什么情况下配置推挽或开漏输出。比如作为I2C功能引脚时,该配置为复用功能开漏输出,还是复用功能推挽输出?
在用户手册7.2.6 外设的IO配置给出了答案。

该章节给出了所有外设使用IO时的配置模式建议。再比如下面USART的配置建议。


使用特权

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

本版积分规则

13

主题

51

帖子

2

粉丝