STM32标准库学习笔记-2.GPIO

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】

标准库开发新建工程准备工作:

  1. 建立工程文件夹,Keil中新建工程,选择型号STM32F103C8T6
  2. 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
  3. 工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里
  4. 工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹
  5. 工程选项,C/C++,Define内定义STM32F10X_MD,USE_STDPERIPH_DRIVER
  6. 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

STM32标准库工程架构:

GPIO简介:

  1. GPIO(General Purpose Input Output)通用输入输出口其接脚可以供使用者由程序控制自由使用
  2. 可配置为8种输入输出模式
  3. 引脚电平:0V~3.3V,部分引脚可容忍5V
  4. 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  5. 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构:

驱动器能够增加IO口的驱动能力。GPIO挂载在APB2上(APB (Advanced Peripheral Bus) 低速总线,用来接低速外设的。)

GPIO配置模式:

GPIO标准库代码流程:

1.使能RCC(Reset and Clock Control)复位与时钟控制器

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

2.定义GPIO_InitTypeDef 结构体,赋值初始化参数

GPIO_InitTypeDef GPIOA_InitTypeStruct;

GPIOA_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIOA_InitTypeStruct.GPIO_Pin = GPIO_Pin_0; //0引脚

GPIOA_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; //50MHz速度

3.将结构体取地址传入GPIO_Init函数,指明初始化GPIO为GPIOA组(每一组有16个引脚)

GPIO_Init(GPIOA,&GPIOA_InitTypeStruct);

4.使用GPIO相关的库函数对GPIO进行操作

推挽输出和开漏输出

推挽式输出(Push-Pull Output)

推挽式输出电路是由互补的两个三极管构成,所谓推拉,推是指推出去,就是输出为高电平是,电流是由内流向外的,形象的称之为推;拉就是从外部向内部拉,当输出为低电平时,电流由负载流向内部,形象的称之为拉。

开漏输出(Open Drain Output)

常说的与推挽输出相对的就是开漏输出,对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。下面就从内部结构和原理上说明为什么开漏输出输出高电平时没有驱动能力,以及进一步比较与推挽输出的区别。

驱动能力:又称之为带负载能力,说白了,就是指该电路的输出阻抗小,使得外接负载电路时,输出电路的输出电压能绝大部分加在负载上,就称之为带负载能力强。

八种配置模式的宏定义:

(1)GPIO_Mode_AIN 模拟输入

(2)GPIO_Mode_IN_FLOATING 浮空输入

(3)GPIO_Mode_IPD 下拉输入

(4)GPIO_Mode_IPU 上拉输入

(5)GPIO_Mode_Out_OD 开漏输出

(6)GPIO_Mode_Out_PP 推挽输出

(7)GPIO_Mode_AF_OD 复用开漏输出

(8)GPIO_Mode_AF_PP 复用推挽输出

相关推荐
MartinYeung518 小时前
[论文学习]重新思考大型语言模型忘却目标:梯度视角与超越
人工智能·学习·语言模型
影视飓风TIM18 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
二哈赛车手18 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
_李小白18 小时前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
十月的皮皮18 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
JAVA面经实录91719 小时前
前端系统化学习计划表(含完整知识思维导图)
前端·学习
破晓单片机19 小时前
067、STM32项目分享:语音儿童学习书桌系统
stm32·单片机·嵌入式硬件
worilb19 小时前
Spring Cloud 学习与实践(9):Gateway + JWT 统一鉴权
学习·spring cloud·gateway
欢乐熊嵌入式编程19 小时前
嵌入式 + MQTT:数据上传到阿里云实战(从0到1完整教程)
stm32·单片机·mqtt·freertos·嵌入式架构·efr32
MartinYeung520 小时前
[论文学习]DP2Unlearning:高效且具保证的大型语言模型遗忘框架(基于差分隐私的 LLM Unlearning 方法)
学习·算法·语言模型