[N32G45x] GPIO模块配置(一)【N32G45x】

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

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

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

GPIO_05.png
比如当使用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配置给出了答案。

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


您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

51

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部