STM32学习笔记(江协科技)-----GPIO

文章介绍了STM32F10x微控制器中GPIO的功能,包括其工作模式、如何驱动LED和蜂鸣器,以及如何读取按键输入。通过示例代码展示了如何初始化GPIO并实现LED闪烁和按键控制LED状态。

GPIO简介:

通用输入输出口。引脚电平0v~3.3v。部分引脚可容忍5V。

可配置8种输入输出模式。

输出模式下:控制端口输出高低电平,可驱动LED,蜂鸣器,模拟通信协议时序等。

输入模式下:读取端口的高低电平,用于读取按键输入,ADC电压采集,模拟通信协议接收数据等。

所有的GPIO都是挂载在APB2总线上。

3c19c6edc6a145a6a3f5d7b9896eef64.png

每个端口都对应寄存器的某一位,该位写0,端口就会输出低电平。写1,端口就会输出高电平。

2d6490a173b244428967993d208d0428.png

8种输入输出模式:

8aa2eba33ab84c0c90dba0f1950e7d6a.png

各个外设的参考配置:

SPI:

e1a43eb92f5b44a9a3d2b4aeeeccab89.png

TIM定时器:

e5ad36ee803748a78a52fde4f0b46ddf.png

USART串口:

d9a7abcd340f4c86aed30f9b509bca41.png

I2C:

5e67bda6d2874690831e611522ee9e83.png

<think>嗯,用户想要查找江协科技STM32学习笔记。根据提供的引用内容,我已经掌握了三篇笔记的核心要点:第一篇介绍了STM32的基本概念(架构、命名规则、系统结构等),第二篇展示了LED和蜂鸣器的控制代码,第三篇提到中断函数的固定命名规则。 用户明确提到"江协科技"这个关键词,且引用中所有笔记都来自同一来源。考虑到STM32学习通常需要系统化知识,我决定按逻辑顺序组织内容:从芯片基础(引用1)、到外设控制(引用2)、再到进阶功能(引用3中断)。这样符合学习路径。 注意到引用1包含最全面的基础概念(如总线结构/引脚定义),适合作为主要回答框架;引用2的代码示例能直观展示开发流程,需要完整呈现;引用3的中断知识点较短但关键,适合补充在最后。每个知识点都标注了引用标记,确保可追溯。 用户可能是嵌入式初学者,需要结构化知识。因此回答采用模块化设计:芯片简介➔开发示例➔进阶知识。代码部分保留原注释,这对理解寄存器配置很重要。最后补充的三个问题覆盖了学习路径:文档获取(实操需求)、最小系统(硬件基础)、中断应用(进阶开发),能引导用户深入探索。 </think>以下是江协科技STM32学习笔记的核心内容整理,依据您提供的引用资料: --- ### **一、STM32基础概念** [^1] 1. **芯片定义** STM32是ST公司基于**ARM Cortex-M内核**开发的32位微控制器,广泛应用于嵌入式领域(智能车、无人机、物联网等)。 2. **ARM架构** ARM公司提供处理器内核设计,半导体厂商(如ST)完善外围电路并生产芯片,超95%移动设备采用ARM架构。 3. **系统结构** - **总线类型**: - **ICode总线**:加载程序指令(连接Flash) - **DCode总线**:加载常量/调试数据(连接Flash) - **System总线**:连接SRAM(存储运行时变量) - **外设总线**: - **AHB**:高速总线(72MHz),挂载核心外设 - **APB2**:中速总线(72MHz) - **APB1**:低速总线(36MHz) --- ### **二、硬件设计要点** [^1] 1. **引脚分类** - **电源引脚(红色)**:供电接口 - **最小系统引脚(蓝色)**:复位/时钟等必要电路 - **I/O功能引脚(绿色)**:GPIO及外设复用 2. **关键特性** - **电平兼容**:标有 **"FT"** 的引脚支持5V输入,否则仅限3.3V - **复用功能**: - **主功能**:默认引脚用途(如GPIO- **重映射**:将冲突的外设功能迁移到备用引脚 --- ### **三、基础外设控制示例(LED/蜂鸣器)** [^2] ```c #include "stm32f10x.h" // 芯片头文件 #include "Delay.h" // 延时函数 int main(void) { // 1. 开启时钟(必需步骤) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 2. GPIO初始化(推挽输出模式) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; // 控制PB12 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速率配置 GPIO_Init(GPIOB, &GPIO_InitStructure); // 应用配置 // 3. 主循环(蜂鸣器鸣响控制) while (1) { GPIO_ResetBits(GPIOB, GPIO_Pin_12); // PB12低电平(鸣叫) Delay_ms(100); GPIO_SetBits(GPIOB, GPIO_Pin_12); // PB12高电平(停止) Delay_ms(100); // ...后续延时逻辑 } } ``` --- ### **四、中断系统关键点** [^3] 1. **中断函数命名规则** 中断函数名称需与向量表严格对应,否则无法触发中断,例如: - `EXTI1_IRQHandler`:对应外部中断线1 - `EXTI15_10_IRQHandler`:对应中断线10-15 (注:函数名错误将导致中断失效) --- ### **
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值