江科大STM32学习笔记——GPIO

 根据数据手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式。 

 输入模式

输入分为有数字输入与模拟输入,而数字输入又可以配置成三种输入模式——浮空、上拉、下拉。

 

 当I/O端口配置为输入模式,内部电阻的连接也不同。

上拉输入

内部上拉电阻被连接,就是说上图上开关闭合,下开关断开,当外部没有输入电平时,端口会被拉到高电平。

下拉输入

下拉电阻被连接,当外部悬空,端口默认拉到低电平。

浮空输入

不连接内部电阻,端口状态不确定,由外部电路决定。

在不同输入模式下,输出缓冲寄存器被禁止。输入经施密特触发器处理更加稳定后再传到输入数据寄存器。

模拟输入

GPIO无效,引脚直接接入内部ADC。

输出模式

当端口配置成输出模式,输入依然有效。输出控制后接了两个MOS管,控制两个MOS管的通断来控制输出信号接到VDD/VSS。

推挽输出

  • PMOS、NMOS均有效。高低电平均有较强驱动能力。
  • 当输出数据寄存器为1,上管导通下管断开,输出与VDD直接连接,输出高电平。
  • 当输出数据寄存器为0,上管断开下管导通,输出与VSS直接连接,输出低电平。

开漏输出

  • PMOS不被激活,仅NMOS工作。
  • 当输出数据寄存器为1,下管断开,输出为高阻状态。
  • 当输出数据寄存器为0,下管导通,输出与VSS直接连接,输出低电平。
  • 此模式只有低电平有驱动能力,高电平无。
  • 可用于I2C通信,避免干扰。输出5V电平。

复用推挽\开漏输出

与普通推挽\开漏差不多,但引脚控制权交与片上外设。

GPIO库函数

初始化

当开启完时钟后,对GPIO初始化可以直接调用GPIO_Init()函数

可以看到GPIO_Init()有两个参数,第一个选用的IO口,第二个要结构体变量。

创建结构体变量:

首先定义一个结构体变量,然后再给结构体变量赋值。

也有结构体初始化函数,会给结构体变量赋默认值。

读取端口数值

设置端口值

<think>好的,我需要处理用户关于科大STM32学习资料的查询。首先,用户希望获取相关的笔记、教程和资料,同时系统级指令要求我按照特定格式回答,包括正确使用LaTeX数学表达式,生成相关问题,并在引用末尾添加标识。 首先,我要检查用户提供的引用内容。引用[1]提到了新建工程时复制启动文件的步骤,引用[2]解释了ADC的作用,引用[3]涉及蜂鸣器的接线和代码。这些引用都是用户提供的站内资料,需要正确对应到回答中。 接下来,根据用户的问题,需要整理这些引用内容,给出结构清晰的回答。可能需要分点说明各个笔记的内容,比如新建工程、ADC模块、蜂鸣器配置等。同时,需要确保按照要求使用正确的LaTeX格式,例如在涉及数学公式的地方用$...$包裹,但根据引用内容,可能暂时没有数学公式,所以需要确认是否有必要添加,或者用户的问题是否需要涉及数学部分。不过当前问题主要关于STM32学习资料,可能不需要数学表达式,但需遵循系统指令,如果有相关内容则应用。 然后,生成相关问题。根据用户提供的示例,问题应围绕主题展开,例如资料获取方法、ADC的应用、端口配置注意事项等。需要确保问题与引用内容相关,并且帮助用户进一步探索主题。 还需要注意回答的中文要求,以及引用的自然添加。例如,在提到新建工程步骤时,末尾添加[^1],在ADC解释后添加[^2],蜂鸣器接线部分添加[^3]。 现在需要组织回答的结构: 1. 新建工程的步骤(引用[1]) 2. ADC模块的作用(引用[2]) 3. 蜂鸣器配置注意事项(引用[3]) 4. 资料获取途径总结 然后生成相关问题,如资料下载方法、ADC应用实例、避免使用的端口等。 最后,检查是否符合所有系统指令,包括LaTeX的正确使用(虽然当前可能不需要,但如果有变量或代码部分,需正确格式化),引用标识的位置,以及问题的相关性。 可能遇到的问题:用户提供的引用中没有涉及数学内容,所以需要确认是否需要强制加入数学表达式,但根据问题内容,可能不适用,因此可忽略数学部分,或寻找是否有隐含的数学点。例如,ADC转换可能涉及数字变量的处理,但用户引用中未提到具体数学公式,所以可能不需要。因此,重点放在正确引用和问题生成上。 现在开始撰写回答,确保每个引用段落末尾自然添加标识,结构清晰,分点说明,然后列出相关问题。</think>以下是关于科大STM32学习资料的整理与说明: ### 一、科大STM32学习笔记核心内容 1. **新建工程配置** 在STM32工程创建中,需复制启动文件至指定目录。具体步骤为:在官方固件库路径`STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm`中找到8个`.s`启动文件,将其粘贴到工程文件夹内的`Start`目录中[^1]。 2. **ADC模块解析** ADC(模数转换器)用于将模拟电压信号转换为数字变量,例如读取传感器电压值。STM32通过ADC将引脚上的连续电压映射为寄存器中的数字量,供程序进行显示、逻辑判断等操作[^2]。 3. **外设配置注意事项** 以蜂鸣器为例,需选择有源高电平触发类型,接线时注意`GND`接地、`VCC`接正极、`I/O`接指定引脚(如`PB12`)。需避免使用默认调试端口`PA15`、`PB3`、`PB4`,否则需额外配置[^3]。 ### 二、资料获取途径 - **官方教程**:通过科大提供的“STM32入门教程”配套资料获取固件库、示例代码等。 - **实验代码**:参考笔记中的代码片段,如蜂鸣器驱动逻辑: ```c void Beep_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStruct); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值