学过51单片机学stm32
学过51单片机学stm32
更多
看到你从51单片机转向STM32,这份学习路径总结送给你:
核心认知:STM32不是更难,而是更强大、更现代
1. 硬件升级带来的差异 (从自行车到汽车)
- 架构与内核:
- 51:通常是8051内核(8位),顺序执行,速度慢(多数MHz级别)。
- STM32:基于ARM Cortex-M(32位),主流是M0(入门)、M3(经典)、M4(带DSP/FPU)。哈佛架构,流水线执行,速度快(几十到几百MHz)。重点理解:32位意味着数据处理能力大大提升、寻址空间巨大(不再像51那样纠结内存分页)。
- 时钟系统:
- 51:时钟源相对简单(外部晶振/内部RC),时钟树简单。
- STM32:时钟树是核心难点之一! 多个时钟源(HSI/HSE/LSI/LSE),复杂的分频/倍频(PLL),各外设时钟可独立开关/配置。必须学会看懂时钟树框图,理解
RCC外设的配置。
- 存储器:
- 51:RAM小(几百字节), Flash小(几K到几十K),可能需要扩展。
- STM32:内置充足的RAM(几十K到几百K+)和Flash(几百K到几MB+)。结构更清晰(代码区、SRAM区、外设寄存器映射区)。
- 外设:
- 51:外设种类少、功能相对简单(UART, Timer, GPIO等)。
- STM32:外设极其丰富且强大:
- GPIO: 多种模式(推挽/开漏/复用/模拟)、速度可配、复用功能映射是关键概念(通过
AFR寄存器配置)。 - 中断系统: 更复杂强大的嵌套向量中断控制器(NVIC),支持中断优先级分组、抢占、响应。务必理解优先级分组机制(
NVIC_PriorityGroupConfig)。 - 定时器: 通用TIM、高级控制TIM、基本TIM。功能远超51(PWM输入捕获、编码器接口、互补输出带死区等)。
- 通信接口: USART/UART, SPI, I2C(STM32称I2C为I²C),还有CAN, USB, SDIO, ETH等高级接口。速度更快、功能更复杂(DMA支持、FIFO)。
- ADC/DAC: 精度更高(通常12位)、通道更多、支持扫描、连续、触发转换等模式。
- DMA: 直接内存访问控制器是性能关键!学会使用DMA大幅减轻CPU负担(数据传输、外设到内存/内存到外设)。
- GPIO: 多种模式(推挽/开漏/复用/模拟)、速度可配、复用功能映射是关键概念(通过
- 电源管理:
- 51:功耗管理简单。
- STM32:提供多种低功耗模式(睡眠、停机、待机),需要合理配置。
2. 软件开发方式的巨大转变 (从徒手拧螺丝到使用电动工具)
- 寄存器开发 vs 库开发:
- 51:寄存器操作是主流(有时用简化的头文件)。
- STM32:寄存器数量庞大(一个外设几十个寄存器),强烈推荐使用官方库!
- 标准外设库 (StdPeriph Library): 较老但仍广泛使用,直接操作寄存器底层但提供了结构化封装。适合学习原理过渡。
- HAL库 (Hardware Abstraction Layer): ST主推的现代库,高度抽象(
HAL_UART_Transmit),可移植性强,集成中间件(USB FATFS等),但代码略臃肿,执行效率稍低(对多数应用影响不大)。 - LL库 (Low-Layer): 介于寄存器与HAL之间,提供轻量级、接近寄存器的操作(保留寄存器结构),又带有基本配置函数。性能和代码大小有优势。
- 建议学习路径: 先了解一点寄存器概念(看手册框图),然后快速上手HAL库(效率最高)。后续深入时可结合参考LL库或寄存器。
- 开发环境 (IDE):
- 51:Keil C51(或SDCC等)。
- STM32:选择更多:
- Keil MDK-ARM: 强大,商业版收费(有代码大小限制的免费版)。调试体验好。
- IAR Embedded Workbench: 同样强大且商业收费。
- STM32CubeIDE: ST官方极力推荐!免费! 集成了STM32CubeMX(图形化配置工具)+ 基于Eclipse的IDE + 编译器(GCC ARM) + 调试器(GDB)。一站式解决方案,强烈新手使用。
- VSCode + 插件: 轻量级,需自己配置(GCC, OpenOCD, Cortex-Debug等),更灵活,适合喜欢折腾或特定需求。
- 工程创建与初始化流程:
- 51:手动编写启动代码(汇编)、链接脚本较少关心。
- STM32:
- 启动文件 (
startup_stm32fxxxxx.s): 汇编文件,包含堆栈初始化、中断向量表、复位处理函数(调用SystemInit和main)。通常由IDE自动加入。 - 系统初始化 (
SystemInit): 在main函数前执行,由启动文件调用。初始化时钟(设置PLL、配置总线分频)、配置Flash等待周期等。通常位于system_stm32f4xx.c等文件中。 - HAL初始化 (
HAL_Init): 配置SysTick作为HAL时基、初始化底层硬件等。 - 时钟配置 (
SystemClock_Config): 关键步骤! 通常由STM32CubeMX生成或在main函数中调用。配置HSI/HSE/PLL、总线时钟(AHB, APB1, APB2)。 - 外设初始化 (
MX_GPIO_Init,MX_USARTx_Init等): 配置具体外设的模式、参数。通常由CubeMX生成。 main中的应用逻辑。
- 启动文件 (
- 核心工具:STM32CubeMX
- 图形化配置神器! 选择芯片型号 -> 图形化配置引脚(复用功能、模式)、时钟树(直观配置时钟源/PLL/分频)、外设参数(UART波特率、SPI模式等)、中间件(FATFS, USB, FreeRTOS)、功耗设置。
- 自动生成初始化代码框架(C代码),包含所有配置好的外设初始化函数(
MX_*系列)、时钟配置代码、中断向量表设置、项目文件(支持主流IDE)。 - 极大降低入门门槛,避免繁琐易错的底层配置。 学会使用它事半功倍。
3. 学习方法与建议
- 必备资料:
- 芯片数据手册: 引脚定义、电气特性、封装信息。
- 参考手册: 最重要! 内核、所有外设的详细工作原理、寄存器描述、框图。学习原理的圣经。
- 编程手册: ARM Cortex-M内核相关的汇编指令、寄存器等(如PMxxxx)。
- 应用笔记: ST官方提供的特定主题(如ADC校准、USB开发)的详细指南。
- HAL/LL库用户手册: 库函数的使用说明。
- 利用STM32CubeMX和STM32CubeIDE: 节省大量底层配置时间,专注应用逻辑。通过CubeMX生成的代码理解初始化流程。
- 从GPIO和UART开始: 点亮LED、按键扫描、串口收发字符串是熟悉新平台的最佳起点。
- 深入理解时钟树和中断: 这两点是STM32区别于51的基石。花时间看懂时钟树框图,理解NVIC工作原理(分组、抢占、响应)。
- 学会使用DMA: 对于高频数据(ADC采样、串口通信、SPI/I2C传输),使用DMA能极大提升系统效率和实时性。
- 善用调试工具: Keil/IAR/CubeIDE的调试器功能强大(单步、断点、查看寄存器/变量/内存、外设寄存器视图、逻辑分析仪)。遇到问题先调试。
- 理解外设工作原理: 不要死记硬背库函数名。通过参考手册了解外设结构(控制寄存器、状态寄存器、数据寄存器、FIFO、DMA请求)。库函数只是操作这些寄存器的工具。
- 利用社区和示例:
- ST官网提供大量基于Cube库的示例代码(
STM32Cube_FW_xxx包)。 - 各大论坛(电子工程世界、21ic、开源电子网)、GitHub、B站教程。
- ST官网提供大量基于Cube库的示例代码(
- RTOS是进阶方向: STM32的资源足够运行实时操作系统(RTOS),如FreeRTOS(CubeMX集成)。学习RTOS是开发复杂应用的必经之路。
- 耐心与实践: STM32功能复杂,遇到问题是正常的。多查手册、多调试、多写代码验证。
总结关键过渡点:
- 思维升级: 从8位资源受限跳转到32位强大平台。
- 攻克难点: 时钟树、中断(NVIC)、GPIO复用功能、DMA。
- 拥抱工具: STM32CubeMX + STM32CubeIDE + HAL/LL库是高效开发的关键。
- 重视资料: 参考手册是你的核心教材。
学习路线图建议:
- 准备: 安装STM32CubeIDE和CubeMX。
- 基础: 选一款开发板(如STM32F103/F4系列),用CubeMX配置一个工程:点亮LED(GPIO输出)、按键控制(GPIO输入)、串口打印(UART)。理解生成的代码结构。
- 核心概念:
- 在CubeMX中配置一个外部中断(EXTI)响应按键,理解NVIC配置(优先级分组)。
- 配置一个定时器TIM产生PWM控制LED呼吸灯。
- 配置ADC采集电位器电压,通过串口发送(先不用DMA)。
- 性能提升: 将ADC采集改为使用DMA传输,并学习使用DMA搬运UART数据。
- 通信总线: 学习SPI(驱动OLED屏)、I2C(驱动温湿度传感器)。
- 深入与进阶: 研究高级定时器、看门狗、RTC、低功耗模式、USB、以太网、RTOS(FreeRTOS)。
坚持下去,你会发现STM32虽然复杂,但其强大的功能和现代的开发方式会让你爱上它!祝你学习顺利!
"stm32和51单片机的区别,先学51还是先学stm32?"
之前无际在网上看了一些老工程师给初学者的一些建议。其中一个就是新手可不可以直接跳过51单片机学习stm32。很多老鸟教唆初学者说
资料下载
佚名
2021-11-12 12:36:01
使用STM32单片机和51单片机实现HC04超声波测距模块的程序免费下载
本文档的主要内容详细介绍的是使用STM32单片机和51单片机实现HC04
资料下载
佚名
2019-08-21 17:31:00
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机