STM32——GPIO配置

一、GPIO八种模式

GPIO的输入输出是对于STM32单片机来说的。以下仅为个人粗略笔记,内部电路分析可参考博客https://blog.csdn.net/k666499436/article/details/123845466

1. 输入

  1. 上拉输入
  2. 下拉输入
  3. 浮空输入
  4. 模拟输入

2. 输出

  1. 复用推挽输出
  2. 普通推挽输出
  3. 复用开漏输出
  4. 普通开漏输出

3. 如何选择GPIO的模式

1. 先判断对于单片机来说是输入还是输出
2. 若为输入:①看引脚是否为ADC输入,如果是则为模拟输入;
②看引脚悬空时,电压不确定,可为高电平、低电平;
③需要高电平-内部有上拉电阻-悬空时为高电平;
④需要低电平-内部有下拉电阻-悬空时为低电平;
3. 若为输出:①有外设-为复用模式;无外设-为普通模式;
②只能输出低电平-开漏模式;可输出高电平、低电平-推挽模式。

二、库函数GPIO配置

1. 配置代码

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//打开GPIOE口的时钟	
	GPIO_InitTypeDef GPIO_InitStruct={0};//清零结构体
	//GPIO参数配置
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
	GPIO_Init(GPIOE,&GPIO_InitStruct);//初始化
	GPIO_SetBits(GPIOE,GPIO_Pin_2);//置引脚

2.参数设置

查找固件库使用手册

  1. GPIO初始化
    在这里插入图片描述
    在这里插入图片描述
    注意:
    当某管脚设置为上拉或者下拉输入模式,使用寄存器 Px_BSRR 和 PxBRR
    GPIO_Mode 允许同时设置 GPIO 方向(输入/输出)和对应的输入/输出设置,:位[7:4]对应 GPIO 方向,
    位[4:0]对应配置。GPIO 方向有如下索引
  • GPIO 输入模式 = 0x00
  • GPIO 输出模式 = 0x01
    Table 186. 给出了所有 GPIO_Mode 的索引和编码
    在这里插入图片描述
    例子:
例:
/* Configure all the GPIOA in Input Floating mode */ 
GPIO_InitTypeDef GPIO_InitStructure; 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
GPIO_Init(GPIOA, &GPIO_InitStructure); 
在 Nordic 的 SDK 中,配置 GPIO 中断的步骤如下: 1. 首先,使用 `nrf_gpio_cfg_input()` 或 `nrf_gpio_cfg_output()` 函数配置 GPIO 引脚。 2. 然后,使用 `nrf_gpio_cfg_sense_input()` 函数配置 GPIO 引脚的中断类型和触发方式。例如,下面的代码将 GPIO 引脚 13 配置为上升沿触发的中断: ```c nrf_gpio_cfg_sense_input(13, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); ``` 在这个例子中,第一个参数是引脚号,第二个参数是上拉或下拉电阻,第三个参数是中断触发方式。 3. 接下来,使用 `nrf_drv_gpiote_init()` 函数初始化 GPIOTE 驱动程序。例如: ```c nrf_drv_gpiote_init(); ``` 4. 然后,使用 `nrf_drv_gpiote_in_init()` 函数初始化 GPIO 引脚的中断处理函数。例如,下面的代码将 GPIO 引脚 13 的中断处理函数设置为 `gpio_evt_handler`: ```c nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_HITOLO(true); nrf_drv_gpiote_in_init(13, &config, gpio_evt_handler); ``` 在这个例子中,第一个参数是引脚号,第二个参数是 GPIOTE 配置项,第三个参数是中断处理函数。 5. 最后,使用 `nrf_drv_gpiote_in_event_enable()` 函数启用 GPIO 引脚的中断事件。例如: ```c nrf_drv_gpiote_in_event_enable(13, true); ``` 在这个例子中,第一个参数是引脚号,第二个参数是布尔值,表示是否启用中断事件。 通过以上步骤,就可以在 Nordic 的设备上配置 GPIO 中断了。需要注意的是,具体的配置方式可能会因不同的设备和 SDK 版本而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值