- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 STM32F103 学习笔记-21-串口通信(第3节)-STM32串口初始化结构体和固件库讲解
采用固件库编程方式,在正式开始编程前,先来了解固件库中用于初始化串口的结构体以及相关的固件库函数。由于我们通常使用异步通信(依靠数据帧内的起始位、停止位等标识符来保证通信可靠性),因此一般不需要初始化这个结构体。:库函数会根据设定的波特率值(如115200),使用预定义的公式自动计算并设置波特率寄存器USART_BRR的值,无需手动计算。时钟极性和相位配合使用,可产生四种不同的时钟模式,类似于SPI通信中的时钟模式配置。:相当于控制串口工作的总开关(配置CR1寄存器的UE位)
2026-01-05 21:53:41
536
原创 STM32F103 学习笔记-21-串口通信(第2节)-STM32串口功能框图讲解
引脚:物理接口,负责信号传输数据寄存器:存储发送和接收的数据控制器:管理串口的工作状态和流程波特率发生器:控制通信速率这些部分协同工作,实现全双工或半双工的串行通信。
2026-01-04 19:38:14
891
原创 STM32F103 学习笔记-21-串口通信(第1节)-串口通信协议简介
串口通信协议并非STM32独有,而是一种通用标准,适用于各种处理器。我们将串口学习分为三部分:协议简介、STM32外设详解和实战编程。本节先讲解协议部分。物理层:规定通信系统的硬件特性,如电平标准、接口形状等,确保数据在物理介质上的传输。简单说,就是“用什么硬件来通信”。协议层:规定数据的打包和解包逻辑,统一收发双方的规则。简单说,就是“用什么规则来通信”。用一个生活比喻:物理层就像我们选择用嘴巴还是手势交流(硬件方式),协议层则像选择用中文或英文交流(软件规则)。关键点。
2025-12-26 17:15:10
710
原创 STM32F103 学习笔记-20-通信的基本概念
串行/并行是数据传输形式,影响引脚数和速率。全双工/半双工/单工决定数据流向灵活性。同步/异步关乎时钟同步方式,影响效率和可靠性。比特率和波特率是速率核心参数,需匹配硬件配置。掌握这些概念后,后续学习STM32的具体通信外设(如USART、SPI)将更轻松。建议结合实验(如串口通信)加深理解。本文档参考《零死角玩转STM32》,及配套章节PPT。
2025-12-23 21:06:28
698
原创 STM32F103 学习笔记-19-SysTick-系统定时器(第2节)-微秒和毫秒延时代码讲解
您提供的代码和图片信息完美对应。while循环的本质是主动轮询SysTick 计时归零时硬件置位标志,软件读取该寄存器时硬件自动清零标志。这是一种非常典型和高效的硬件定时器软件查询用法。
2025-12-23 19:52:33
993
原创 STM32F103学习笔记-19-SysTick-系统定时器(第1节)-功能框图讲解和优先级配置
系统定时器英文名为 System Tick Timer,中文译为系统定时器。它是一个 24 位的计数器,只能递减计数,属于 Cortex-M3 内核的一部分。如前所述,无论使用的是 Cortex-M3、M4 还是 M7 内核,都包含这个 SysTick 定时器,并且它嵌套在 NVIC(嵌套向量中断控制器)中。SysTick 中断在 NVIC 的向量表中有固定的中断号(IRQn 为 SysTick_IRQn,负数,属于内核中断)
2025-12-17 15:30:19
1059
原创 STM32F103学习笔记-18-EXTI(第2节)-GPIO外部中断代码讲解
本节课将带领大家从零开始编写STM32的外部中断(EXTI)驱动程序。这是我们学习STM32以来,除了GPIO之外接触的第一个外设。通过本节学习,您将掌握:如何配置GPIO作为外部中断输入如何初始化EXTI外设如何配置NVIC中断控制器如何编写中断服务函数前置知识要求:建议先学习"STM32中断应用总结"章节,了解中断优先级配置的基本概念。// KEY1 按键相关宏定义#define KEY1_INT_GPIO_PIN GPIO_Pin_0 // PA0引脚。
2025-11-28 22:26:30
1007
原创 STM32F103 学习笔记-18-EXTI(第1节)-EXTI 功能框图讲解与 EXTI 初始化结构体
EXTI(External Interrupt/Event Controller,外部中断/事件控制器)是 STM32 中用于处理外部信号变化的重要外设。当 GPIO 引脚的电平发生跳变(如按键按下产生的上升沿或下降沿)时,EXTI 能够检测到这一变化,并选择性地向 NVIC(嵌套向量中断控制器)发出中断请求,或直接触发其他外设的事件,从而实现高效响应。中断与事件的核心区别中断 (Interrupt):路径最终通向 CPU。当条件满足时,EXTI 会向 NVIC 发送请求,CPU 通过执行中断服务函数。
2025-11-26 22:13:09
869
原创 STM32F103学习笔记-17-STM32 中断应用总结
当多个中断同时发生时,比较顺序为:比较主优先级:主优先级高的先执行(可嵌套)。如果主优先级相同,比较子优先级:子优先级高的先执行。如果子优先级也相同,比较硬件中断编号:编号小的先执行(编号见向量表)。中断是STM32实现实时处理的核心机制,分为系统异常和外部中断。NVIC统一管理所有中断,包括使能、优先级设置和响应。优先级分主优先级(抢占)和子优先级,通过分组配置(5种方式)。编程步骤:使能外设中断→设置优先级分组→配置NVIC→编写ISR。ISR函数名必须与向量表一致,且要清除中断标志。
2025-11-19 22:29:39
1315
1
原创 STM32F103学习笔记-16-RCC(第4节)-使用 HSI 配置系统时钟并用 MCO 监控系统时钟
通过本节实验,我们学会了:如何使用HSI(内部时钟)通过PLL 倍频配置系统时钟;如何通过MCO 输出验证系统时钟频率;理解了固件库函数RCC_HSICmd的配合使用;掌握了调试与验证时钟系统的基本方法。
2025-11-12 20:55:03
894
原创 STM32F103学习笔记-16-RCC(第5节)-STM32 标准外设库函数命名规则总览(以stm32f10x_rcc.c/h为例)
STM32 标准外设库的命名规律高度统一:模块前缀:表示所属外设(RCC / GPIO / TIM / USART / ADC 等)功能对象:表示模块内的子功能(如 PLL / HSE / Flag / Clock 等)操作动词:表示操作类别(Config / Cmd / Init / Get / Set / Clear 等)
2025-11-09 20:23:40
1021
原创 STM32F103学习笔记-16-RCC(第3节)-使用HSE配置系统时钟并使用MCO输出监控系统时钟
层次文件内容类型示例用户层应用逻辑(调用固件库)调用接口层函数声明 + 宏定义底层层函数实现(操作寄存器)`RCC->CFGR像是一个“工程师调度中心”,是它的“功能目录”,是它的“实际执行员”,最终通过修改 RCC 寄存器来驱动 MCU 的时钟系统运行。下面给出针对“超频实验与效果验证与使用 MCO 输出监控系统时钟”的入门指导笔记(面向初学者、去掉前面已讲过的基础概念,直接给出实验要点、步骤、注意事项、测量与判读方法,以及必要的代码修正/清单)。
2025-11-09 20:18:54
1153
原创 STM32F103学习笔记-16-RCC(第2节)-讲解系统时钟配置函数SetSysClockTo72()
函数的核心任务是将STM32F103的系统时钟配置为72MHz,并同步设置HCLK、PCLK2和PCLK1的分频系数。该函数通过条件编译宏来区分芯片系列:基础型(小容量、中容量、大容量)和互联型(STM32F105/107)。为简化分析,我们删除互联型相关的代码,专注于基础型芯片的配置流程。整个开始↓启用HSE → 等待HSERDY↓配置Flash延迟(2等待周期)↓配置PLL(源=HSE,倍频=9) → 使能PLL → 等待PLLRDY↓。
2025-11-06 21:26:48
1082
原创 STM32F103学习笔记-16-RCC(第1节)-时钟树讲解
:AHB高速总线时钟,最高72MHz,为AHB总线上的外设提供时钟,为Cortex-M3内核、存储器和高速外设(如DMA)提供时钟。。
2025-11-05 21:57:31
1060
原创 stm32f103学习笔记-15-Cortex-M3启动文件讲解
向量表是计算机系统中用于处理异常和中断的关键数据结构。根据您提供的描述,我将结合核心概念详细解释向量表的定义、功能和工作机制。向量表是一个存储在固定内存地址(通常是0x00000000)的指针数组,每个数组元素是一个32位整数(WORD),对应一个特定的异常或中断类型。这些指针直接指向异常服务例程(ESR)的入口地址。当系统发生异常或中断时,内核通过查询向量表快速定位并跳转到相应的处理函数。
2025-10-30 21:34:49
989
原创 stm32f103学习笔记-14-GPIO输出和输入(位带操作)
宏定义通过预处理器替换文本,简化代码并减少运行时开销。以下是代码中的关键宏应用。
2025-10-29 16:21:48
583
原创 stm32f103学习笔记-13-GPIO输入(按键检测)
在bsp_key.h// KEY2定义#define KEY2_GPIO_PIN GPIO_Pin_1 // 根据实际硬件连接修改#define KEY2_GPIO_PORT GPIOA // 根据实际硬件连接修改在bsp_led.h// 红色LED定义。
2025-10-27 17:22:22
1330
原创 stm32f103学习笔记-11-新建工程(固件库版本)
点明了这样做的好处:我们只需要在编译器全局设置中定义一次,整个工程的所有文件就都能识别到这个宏,而不需要在每个.c文件里都写一遍。
2025-10-20 15:49:04
1092
原创 stm32f103学习笔记-10-固件库目录文件分析
解压库文件后,根目录下主要包含以下文件夹和文件:Libraries:存放库的核心源代码和启动文件。Project:包含示例工程和工程模板。Utilities:包含基于 ST 官方实验板的例程(一般较少使用)。:库帮助文档,提供函数说明和使用指南。
2025-10-16 19:03:18
1097
原创 stm32f103学习笔记-9-从零开始理解固件库结构
固件库优势:屏蔽底层细节,提高开发效率,代码更易维护学习路径:先理解整体结构,再逐个外设实践调试技巧:遇到问题时,可查看库函数源码理解实现原理进阶方向:熟练后可以研究寄存器操作,加深对硬件的理解。
2025-10-16 15:08:27
937
原创 stm32f103学习笔记-8-从寄存器操作到可移植库函数
/ 使用宏定义代替直接地址// 使能GPIOB时钟// 配置CRL寄存器// 设置为推挽输出// 输出低电平相关头文件:改进:用有意义的宏名代替魔术数字提高了代码可读性地址变化时只需修改宏定义// 硬件配置宏,更换硬件时只需修改这里。
2025-10-11 20:56:47
622
原创 stm32f103学习笔记-7-编写GPIO初始化结构体和初始化函数
第1行GPIO_InitTypeDef* GPIO_InitStruct:参数是一个指向初始化结构体的指针。GPIO_InitTypeDef在头文件stm32f10x_gpio.h中定义,GPIO_InitTypeDef是一个包含三个成员的结构体类型,包含引脚号、模式、速度等字段,用于存储GPIO的配置参数。它本身是一个类型模板,而不是具体变量。GPIOx:指向哪个GPIO端口(GPIOA, GPIOB, GPIOC...),是一个结构体指针。
2025-10-11 17:58:29
949
原创 stm32f103学习笔记-6-编写端口置位复位函数
C语言语法详解::这是一个指向GPIO_TypeDef结构体的指针形参是指针类型,表示参数是一个地址GPIOx是参数名,可以传递GPIOA、GPIOB等外设的地址:这是一个16位无符号整数形参uint16_t是标准整数类型,表示16位无符号整数GPIO_Pin是参数名,可以传递GPIO_Pin_0、GPIO_Pin_1等引脚定义#define GPIO_Pin_0 ((uint16_t)0x0001) /* 引脚0 */
2025-10-07 18:54:09
1270
原创 stm32f103学习笔记-3-GPIO功能框图讲解
要理解这两种情况的电流流向,我们可以把芯片内部的I/O引脚很“娇弱”,外部电压一旦过高/过低,容易烧坏内部电路。于是工程师给I/O装了,组成「双向防洪系统」::阳极连芯片电源VDD(动力源,比如3.3V),阴极连I/O引脚;:阳极连I/O引脚,阴极连芯片地VSS(参考地,比如0V)。二极管的特性是:只有当电流想从「阳极(高电位端)」流到「阴极(低电位端)」时,阀门才打开;反向则死死关闭。
2025-09-30 21:48:48
801
原创 stm32f103学习笔记-2-使用寄存器点亮LED
时钟使能 → 给GPIOB供电模式配置 → 告诉PB0如何工作电平控制 → 实际控制LED亮灭硬件响应 → 电流流通,LED发光。
2025-09-25 18:44:32
342
原创 stm32f103学习笔记-1-新建工程模版(寄存器版)
5.配置魔法棒下载烧录(改开发板型号记得重新配置)4.编译后自动生成的文件会放在对应的两个文件夹里。“.hex文件”——可以通过串口下载的可执行文件。“.axf文件”——可通过编译器下载的可执行文件。3.如何解决工程窗口(项目栏)文件上的小钥匙。“.sct文件”——STM32 分散加载文。2.头文件< >vs" "
2025-09-20 22:28:45
164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅