STM32开发(5)----CubeMX配置GPIO

CubeMX配置GPIO

  • 前言
  • 一、GPIO介绍
    • 1.输入浮空模式
    • 2.上拉输入模式
    • 3.下拉输入模式
    • 4.模拟输入模式
    • 5.推挽输出
    • 6.开漏输出
    • 7.复用推挽输出
    • 8.复用开漏输出
  • 二、实验过程
    • 1.实验材料
    • 2.STM32CubeMX配置GPIO
    • 3.代码实现
    • 4.编译烧录
    • 5.硬件连接
    • 6.实验结果
  • 总结


前言

本章介绍使用STM32CubeMX对GPIO进行配置的方法,并通过控制LED灯亮灭的实现来展示配置效果,在进行实验前介绍了GPIO的相关知识。

一、GPIO介绍

GPIOs (general-purpose inputs/outputs) 芯片通过GPIO引脚与外部设备连接用来实现信号采集或信号输出控制功能,即输入输出功能。STM32的GPIO它按组分配,每组 16 个(注意,如果芯片引脚有限,最后一组不一定满16个),组数视芯片而定,如stm32f103c6t6只有3组,且第三组PC只有PC13、PC14、PC15。除此之外,STM32的GPIO的部分 IO 口兼容 5V,哪些IO兼容5V可以通过查找datasheet确定,如下图:

STM32开发(5)----CubeMX配置GPIO_第1张图片
GPIO通常用法包括:

  1. 控制引脚输出高、低电平,或直接驱动、或间接驱动LED、继电器等期间实现开关功能;
  2. 芯片接收外部输入高、低电平,以此确定某些外部设备(例如按钮、开关)状态,做出相应操作。

GPIO 有八种工作模式,分别是:
输入模式有:

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

输出功能有:

  1. 开漏输出
  2. 推挽输出
  3. 开漏式复用功能
  4. 推挽式复用功能

1.输入浮空模式

输入浮空模式:数据通道中仅接入TTL触发器(作用是将相对缓慢变化的模拟信号变成矩形信号)整形,随后输出到输入数据寄存器,该种工作模式未接入任何上拉/下拉电阻, IO 口的电平完全是由外部电路决定。 模式特点:在该引脚悬空(无信号输入)的情况下,读取该端口的电平是不确定的。

适用场合:外部按键输入检测/USART RX引脚

STM32开发(5)----CubeMX配置GPIO_第2张图片

2.上拉输入模式

上拉输入模式:与浮空输入模式相比,仅仅是在数据通道前端接入了一个上拉电阻。 特点是:在无信号输入时端口电位受上拉电阻钳制,I/O端口输入电平始终保持为高电平;而当端口输入电平为低电平时,I/O端口输入电平为低电平。

适用场合:配置中断输入(引脚触发中断条件为下降沿触发/低电平触发时),不可以做电流型驱动

STM32开发(5)----CubeMX配置GPIO_第3张图片

3.下拉输入模式

下拉输入模式:与浮空输入模式相比,仅仅是在数据通道前端接入了一个下拉电阻。 模式特点:在无信号输入时端口电位受下拉电阻钳制,I/O端口输入电平始终保持为低电平;而当端口输入电平为高电平时,I/O端口输入电平为高电平。

适用场合:配置中断输入(引脚触发中断条件为上升沿触发/高电平触发时),不可以做电流型驱动

STM32开发(5)----CubeMX配置GPIO_第4张图片

4.模拟输入模式

模拟输入模式:数据通道不接入任何处理单元(TTL触发器/钳制电阻),直接输入MCU内部的处理单元。 模式特点:相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。

适用场合:该模式下需要用到芯片内部的模拟电路单元, 用于 ADC、 DAC、 MCO这类操作模拟信号的外设。ADC模拟输入/低功耗下省电。

STM32开发(5)----CubeMX配置GPIO_第5张图片

4种输出模式

5.推挽输出

推挽输出:输出具有驱动能力,当CPU输出逻辑’0’时,I/O端口输出低电平,而当CPU输出逻辑’1’时,I/O端口输出高电平。推挽输出模式下输出高电平,有较强的的驱动能力,驱动电流最大可达25mA。

应用场景:驱动LED、数码管等电子元器件、输出控制某个信号。另外在推挽输出模式下,我们可以读取该 IO 口的电平状态。

STM32开发(5)----CubeMX配置GPIO_第6张图片

6.开漏输出

开漏输出:适合做电流型的驱动,其吸收电流能力较强。当CPU输出逻辑’0’时,I/O端口输出低电平,而当CPU输出逻辑’1’时,该引脚处于开漏,也就是浮空状态(高阻态),如果想输出高电平则必须接入上拉电阻。同时IO口可以由外部电路改变为低电平或不变,即可读IO输入电平变化,实现了I/O端口的双向功能;

应用场景:I2C(I2C_SDA),SMBus,等总线判断总线占用状态。

STM32开发(5)----CubeMX配置GPIO_第7张图片

7.复用推挽输出

复用推挽输出:在STM32中,一个引脚通常可作为普通GPIO来使用,但通常有多个复用模块对应着同一个引脚,那么当这个GPIO作为内置外设引脚时,就叫做复用模式。

适用场合:常见片内外设(USART TX引脚/SPI/PWM输出等等)

STM32开发(5)----CubeMX配置GPIO_第8张图片

8.复用开漏输出

复用开漏输出:与开漏输出特性一致,只不过引脚选择了复用功能。

适用场合:常见片内外设(I2C/SMBus等等)

STM32开发(5)----CubeMX配置GPIO_第9张图片

二、实验过程

1.实验材料

  • STM32F103C6T6最小系统开发板

  • ST-LINK V2

STM32开发(5)----CubeMX配置GPIO_第10张图片

  • 杜邦线
  • LED灯
  • 示波器

2.STM32CubeMX配置GPIO

选择芯片stm32f103c6t6,新建工程

STM32开发(5)----CubeMX配置GPIO_第11张图片

设置时钟源,最小系统外部晶振8Mhz,作为外部高速HSE时钟源。由于没有外接外部低速晶振,这里低速时钟源选择旁路时钟源。

STM32开发(5)----CubeMX配置GPIO_第12张图片

配置时钟树,这里使用官方推荐的配置

STM32开发(5)----CubeMX配置GPIO_第13张图片

配置引脚功能,因为我使用杜邦线链接LED和MCU,功能引脚输出电流,驱动LED灯点亮,我这里选择PA0作为GPIO_Output
功能引脚,GPIO mode选择推挽输出(回忆下前面我们介绍的几种模式),输出高电平,当然也可以去配置输出上拉或者下拉,以及输出速率等参数。

STM32开发(5)----CubeMX配置GPIO_第14张图片

Code Generator中设置只拷贝使用到的库,分离.c和.h文件

STM32开发(5)----CubeMX配置GPIO_第15张图片

设置好项目名称和路径,点击GENERATE CODE即可,生成后使用keil5 IDE打开。

STM32开发(5)----CubeMX配置GPIO_第16张图片

3.代码实现

实现一个LED等间隔1s闪烁一次的功能,代码如下

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
			
    /* USER CODE BEGIN 3 */
		HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0); //PA0
		
		HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

4.编译烧录

代码编译成功

STM32开发(5)----CubeMX配置GPIO_第17张图片

在下载前检查keil是否检测到ST-LINK,选择魔法棒进行设置

STM32开发(5)----CubeMX配置GPIO_第18张图片

如图所示,已经检测到ST-LINK 下载器

STM32开发(5)----CubeMX配置GPIO_第19张图片

点击load,自动下载固件

STM32开发(5)----CubeMX配置GPIO_第20张图片

5.硬件连接

烧录器ST-LINK V2和最小系统板的连接如图所示: 四线连接 SWDIO,GND,SWCLK,和3.3V电源

STM32开发(5)----CubeMX配置GPIO_第21张图片

6.实验结果

由于没有找到LED灯,所以使用示波器进行测量,从测试结果可以看到,输出了PA0脚输出了电压为3.3V,高低点评间隔1s的方波,如下图所示,以后找到LED灯再拍个视频补上吧。

其实使用示波器测量结果也有一个好处,就是更好判断验结果是否正确,延时和输出电平是否正确这些元素都可以很明显的看到。

总结

本章通过电量LED灯的实验来介绍STM32CubeMX对GPIO进行配置的方法,最后由于没有找到led灯,只能使用示波器来测试实验结果,不过这个实验比较简单,很容易分析结果。

你可能感兴趣的:(stm32基础教程,stm32,单片机,嵌入式硬件,GPIO,CubeMX)