STM32 CubeMX(一)—— GPIO


前言

集成电路

将大量的分立元件通过特殊工艺集成在很小的半导体芯片上。

引脚

又叫管脚,英文叫Pin。

集成电路(芯片)内部电路引出,与外围电路的接线所有的引脚构成了这块芯片的接口

GPIO

通用输入输出端口的简称。

简单来说就是 STM32 可控制的引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚。如型号为 STM32F103ZET6 的芯片有 GPIOA、GPIOB至 GPIOG 共 7 组 GPIO。 芯片一共 144 个引脚,其中GPIO 就占了一大部分

门电路

实现基本逻辑运算和复合运算的单元电路。

常用的门电路有非门、与非门、或非门、异或门、与或非门等
门电路有一个阈值电压,当输入电压从低电平上升到阈值电压或从高电平下降到阈值电压时,电路的状态将发生变化。

施密特触发器

Schmitt trigger,一种特殊的门电路。

与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。

寄存器

register,存放数据的一些小型存储区域,暂时存放参与运算的数据和运算结果。

STM32的GPIO寄存器CRL、CRH、IDR、ODR、BSRR、BRR.

时钟

单片机运行的基础。

时钟信号推动单片机内各个部分执行相应的指令。

AHB

Advanced High performance Bus的缩写,译作高级高性能总线,一种“系统总线”。

主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

CPU

中央处理器(central processing unit)

作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

ADC

Analog-to-Digital Converter,模拟数字转换器。

连续变化的模拟信号转换离散的数字信号的器件。

GPIO的工作模式

输入模式

施密特触发器打开,输出被禁止。

数据寄存器每隔1个AHB1时钟周期更新一次,可通过输入数据寄存器GPIOx_IDR读取I/O状态。

输入浮空(GPIO_Mode_IN_FLOATING)

浮空就是逻辑器件与引脚既不接高电平,也不接低电平。由于逻辑器件的内部结构,相当于接了高电平。

一般实际运用时,引脚不建议悬空,易受干扰,这种设置在数据传输时用的比较多

输入上拉(GPIO_Mode_IPU)

将不确定的信号通过一个电阻嵌位在高电平。

减少干扰,电阻同时起到限流的作用。

输入下拉(GPIO_Mode_IPD)

将不确定的信号通过一个电阻嵌位在低电平。

减少干扰,电阻同时起到限流的作用。

模拟输入(GPIO_Mode_AIN)

传统方式的输入。

前三者CPU可以随时读取IO口的电平状态。与之不同,从IO口过来的模拟量要被ADC转换成数字量才能被CPU读取。

输出模式

输出使能,此时施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。

由于输出模式时,引脚电平会受到输出数据寄存器GPIOx_ODR影响,而ODR寄存器对应引脚的位为0,即引脚初始化后默认输出低电平

开漏输出(GPIO_Mode_Out_OD)

推挽输出(GPIO_Mode_Out_PP)

开漏输出与推挽输出的区别.

复用功能

开漏复用功能(GPIO_Mode_AF_OD)

推挽复用功能(GPIO_Mode_AF_PP)

GPIO的配置方法

  1. 配置时钟并使能。
  2. 选择引脚。
  3. 配置引脚模式。
  4. 最后调用库函数初始化GPIO,将配置写入。

GPIO端口及寄存器的简单配置与使用.

STM32 CubeMx

一个图形化的工具,也是配置和初始化STM32代码生成器。

自动生成开发初期关于芯片相关的一些初始化代码,它把很多东西封装的比较好,硬件抽象层、中间层、示例代码等

STM32 CubeMX的特性
直观的选择 STM32 微控制器
微控制器图形化配置
自动处理引脚冲突
动态设置确定的时钟树
可以动态确定参数设置的外围和中间件模式和初始化
代码工程生成器覆盖了STM32微控制器初始化编译软件, 如IAR、KEIL、GCC

STM32 CubeMX配置GPIO.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在STM32F407上实现流水灯,你可以按照以下步骤进行操作: 1. 首先,需要配置GPIO引脚为输出模式,并设置相应的引脚电平。可以使用STM32CubeMX工具来生成初始化代码,或者手动编写代码进行配置。 2. 创建一个循环,在循环中依次将各个引脚置高电平,然后延时一段时间,再依次将引脚置低电平,再延时一段时间。 3. 重复上述步骤,就可以实现流水灯效果。 下面是一个简单的示例代码,演示了如何在STM32F407上实现流水灯效果: ```c #include "stm32f4xx.h" #include "stm32f4xx_hal.h" // 定义LED引脚 #define LED_PIN_1 GPIO_PIN_12 #define LED_PIN_2 GPIO_PIN_13 #define LED_PIN_3 GPIO_PIN_14 #define LED_PIN_4 GPIO_PIN_15 // 定义延时时间 #define DELAY_MS 500 int main(void) { // 初始化HAL库 HAL_Init(); // 初始化GPIO库 __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = LED_PIN_1 | LED_PIN_2 | LED_PIN_3 | LED_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 循环流水灯 while (1) { // 依次点亮LED HAL_GPIO_WritePin(GPIOA, LED_PIN_1, GPIO_PIN_SET); HAL_Delay(DELAY_MS); HAL_GPIO_WritePin(GPIOA, LED_PIN_2, GPIO_PIN_SET); HAL_Delay(DELAY_MS); HAL_GPIO_WritePin(GPIOA, LED_PIN_3, GPIO_PIN_SET); HAL_Delay(DELAY_MS); HAL_GPIO_WritePin(GPIOA, LED_PIN_4, GPIO_PIN_SET); HAL_Delay(DELAY_MS); // 依次熄灭LED HAL_GPIO_WritePin(GPIOA, LED_PIN_1 | LED_PIN_2 | LED_PIN_3 | LED_PIN_4, GPIO_PIN_RESET); HAL_Delay(DELAY_MS); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值