STM32学习笔记

目录

一、基础篇

一、单片机简介

1、单片机是什么?

2、单片机有什么用?

3、单片机的发展历程

4、单片机发展趋势

[5、CISC VS RISC](#5、CISC VS RISC)

6、总结

二、Cortex-M系列简介

1、ARM公司

2、Cortex内核分类及特征

3、Cortex-M3/4/7介绍

4、总结

三、初识STM32

1、STM32是什么?

2、STM32芯片分类

3、STM32命名规则

4、STM32选型

5、总结

四、学会查看数据手册

五、最小系统和IO分配

六、常用开发工具简介

七、安装仿真器驱动、USB虚拟串口驱动

八、MDK编译例程和串口下载程序

九、DAP下载程序及程序调试

十、文本美化、代码编辑技巧

十一、查找和替换技巧、工程编译问题定位、窗口视图管理

十二、C语言基础知识复习1

十三、C语言基础知识复习2

十四、内核和芯片F1-F4系统架构

十五、F7-H7系统架构

十六、存储器映射

十七、寄存器映射1

十八、寄存器映射2

十九、STM32基础知识课堂总结

二十、新建寄存器版本MDK工程1

二十一、新建寄存器版本MDK工程2

二十二、新建寄存器版本MDK工程课堂总结

二十三、STM32Cube固件包浅析

二十四、HAL库框架结构

二十五、如何使用HAL库

二十六、新建HAL版本MDK工程1

二十七、新建HAL版本MDK工程2

二十八、MAP文件浅析

二十九、STM32启动模式

三十、STM32启动过程

三十一、STM32启动过程课堂总结

三十二、STM32CubeMX简介和安装

三十三、新建STM32CubeMX工程步骤

三十四、什么是时钟-认识时钟树(F1)

三十五、认识时钟树(F4)

三十六、认识时钟树(F7)

三十七、认识时钟树(H7)

三十八、系统时钟配置步骤-系统时钟初始化函数(F1)

三十九、系统时钟初始化函数(F4-F7)

四十、系统时钟初始化函数(H7)

四十一、sys文件夹-SysTick工作原理

四十二、delay相关函数介绍

四十三、printf函数输出流程及使用

四十四、printf函数支持

四十五、GPIO简介

四十六、GPIO基本结构介绍

四十七、GPIO八种工作模式分析

四十八、GPIO寄存器介绍

四十九、GPIO配置步骤

五十、GPIO编程实战:点亮一个LED灯

五十一、GPIO编程实战:通过一个按键控制一个LED灯亮灭

五十二、GPIO课堂总结

五十三、什么是中断?

五十四、NVIC概念及工作原理

五十五、STM32中断优先级基本概念及分组

[五十六、STM32 NVIC的使用](#五十六、STM32 NVIC的使用)

五十七、EXTI基本概念和主要特性

[五十八、EXTI工作原理(F1 F4 F7)](#五十八、EXTI工作原理(F1 F4 F7))

五十九、EXTI工作原理(H7)

六十、EXTI和IO映射关系

六十一、中断的使用和HAL库中断回调处理机制

六十二、GPIO编程实战:通过外部中断控制一个灯亮灭

六十三、中断课堂总结

六十四、数据通信的基础概念

六十五、串口(RS-232)

六十六、STM32的USART介绍和框图

六十七、设置USART波特率(F1)

六十八、设置USART波特率(F4/F7/H7)

六十九、USART寄存器介绍(F1)

七十、HAL库回调机制

七十一、USART异步通信配置步骤

七十二、IO引脚复用功能

七十三、编程实战:通过串口接收或者发送一个字符

七十四、解读例程源码:串口实验

七十五、串口课堂总结

七十六、IWDG简介、工作原理、框图

七十七、IWDG寄存器、溢出时间计算

七十八、IWDG配置步骤

七十九、验证不及时喂狗,系统将复位重启

八十、IWDG课程总结

八十一、WWDG简介、工作原理、框图

八十二、WWDG寄存器、超时时间计算

八十三、WWDG配置步骤

八十四、编程实战:验证窗口看门狗功能

八十五、IWDG和WWDG区别、课堂总结

八十六、定时器概述

八十七、基本定时器简介、框图、计数模式及溢出条件

八十八、定时器寄存器溢出时间计算方法

八十九、定时器中断实验配置步骤

九十、编程实战:定时器中断实验

二、入门篇

三、提高篇


一、基础篇

一、单片机简介

学习目标:

  • 单片机是什么(了解)
  • 单片机有什么用(了解)
  • 单片机发展历史(了解)
  • 单片机发展趋势(了解)
  • CISC VS RISC(了解)
  • 课堂总结(了解)

1、单片机是什么?

单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片

|---------|----------------------|-----------------------------------------|
| 对比项 | 电脑 | 单片机 |
| CPU主频 | X86 , 2~5GHz | 51/ARM/RISC-V,72MHz @STM32F1 |
| 内存容量 | GB级,约40GB/s @DDR4 | KB级 ,约300MB/s @STM32F1 |
| 硬盘容量 | TB级 ,约500MB/s @SATA3 | KB级,约100MB/s @STM32F1 |
| 功耗 | 数百W | <0.5W。3.3V * 150 mA = 0.495W @STM32F1 |
| 价格 | 2000~10000 | <10元 @STM32F1 |
[电脑 VS 单片机]

单片机的特点

  • 体积小:<5mm*5mm
  • 功耗低: mA级,<0.5W
  • 集成度高: IO/TIM/AD/DA
  • 使用方便:C/Debug
  • 扩展灵活:IIC/SPI/FSMC

2、单片机有什么用?

  • 仪器仪表:电源、示波器、焊台
  • 家用电器:空调、冰箱、洗衣机
  • 工业控制:机器人、PLC、电梯
  • 汽车电子:GPS、ABS、胎压检测

3、单片机的发展历程

4、单片机发展趋势

5、CISC VS RISC

|------|---------------------------------------------------------------|----------------------------------------------------|
| 对比项 | 复杂指令集计算机(CISV) | 精简指令集计算机(RISC) |
| 目的 | 为了便于编程和提高存储器访问效率 | 为了提高处理器运行速度 |
| 指令特点 | 1、指令多,模式多,格式可变 2、指令的执行需要的时钟周期差距很大 3、无流水线或流水线程度较低 4、指令由微代码翻译执行 | 1、指令少,模式少,格式固定 2、大多数指令只需1个时钟周期 3、流水线结构 4、指令直接由硬件执行 |
| 优点 | 1、指令丰富、功能强大 2、寻址方式灵活 | 1、指令精简,易于设计,使用率均衡 2、程序执行效率高 |
| 缺点 | 1、指令使用率不均衡 2、不利于采用先进结构提高性能 3、结构复杂不利于超大规模集成电路实现 | 1、指令数较少,功能不及CISC强大 2、寻址方式不够灵活 |
[CISC VS RISC]

冯诺依曼结构 VS 哈佛结构

6、总结

二、Cortex-M系列简介

学习目标:

  • ARM公司(了解)
  • Cortex内核分类及特征(了解)
  • Cortex-M3/4/7介绍(了解)
  • 课堂总结(了解)

1、ARM公司

ARM公司:只做内核设计和IP授权,不参与芯片设计

ARM架构为什么能风靡全球?

2、Cortex内核分类及特征

|---------|---------------------------|-------------------------|-------------------------------|
| 对比项 | Cortex-A(Application) | Cortex-R(Real-Time) | Cortex-M(Microcontroller) |
| 特点 | 高时钟频率,长流水线,高性能 | 较高时钟频率,较长的流水线,实时性强 | 时钟频率较低,通常较短的流水线,超低功耗 |
| 应用场景 | 移动计算、智能手机、平板电脑、数字电视 | 军工、汽车电子、无线基带、硬盘控制器 | 工控、传感器、消费电子、家用电器、医疗器械 |
| 性能 | 高 | 中 | 低 |

3、Cortex-M3/4/7介绍

|---------------|-----------|---|---------|---|--------------|
| 类别 | Cortex-M3 | Cortex-M4 ||| Cortex-M7 |
| 核心版本 | ARMv7-M | ARMv7E-M ||||
| 指令系统 | Thumb/Thumb-2 |||||
| DSP指令扩展 | 无 || 有 | 有 ||
| 浮点单元 | 无 || 单精度浮点单元 | 可选单/双精度浮点单元 ||
| 流水线 | 3级 || 3级+分支预测 | 6级+分支预测 ||
| 中断 | NVIC,NMI + 1~240物理中断源,8~256个中断优先级 |||||
| 系统定时器 | 24位系统滴答定时器 |||||
| 睡眠模式 | 集成WFI和WFE指令以及退出睡眠功能 |||||
| 调试 | 可选JTAG和SWD调试接口 |||||
| 内存保护 | 可选8个区域MPU | 可选8个区域MPU ||| 可选8、16个区域MPU |
| DMIPS/MHz | 1.25 | 1.25 ||| 2.14 |
| CoreMark®/MHz | 3.34 | 3.43 ||| 5.01 |

4、总结

三、初识STM32

学习目标:

  • STM32是什么?
  • STM32芯片分类
  • STM32命名规则
  • STM32选型
  • 总结

1、STM32是什么?

2、STM32芯片分类

3、STM32命名规则

4、STM32选型

由高到到低,由大到小

5、总结

四、学会查看数据手册

五、最小系统和IO分配

六、常用开发工具简介

七、安装仿真器驱动、USB虚拟串口驱动

八、MDK编译例程和串口下载程序

九、DAP下载程序及程序调试

十、文本美化、代码编辑技巧

十一、查找和替换技巧、工程编译问题定位、窗口视图管理

十二、C语言基础知识复习1

十三、C语言基础知识复习2

十四、内核和芯片F1-F4系统架构

十五、F7-H7系统架构

十六、存储器映射

十七、寄存器映射1

十八、寄存器映射2

十九、STM32基础知识课堂总结

二十、新建寄存器版本MDK工程1

二十一、新建寄存器版本MDK工程2

二十二、新建寄存器版本MDK工程课堂总结

二十三、STM32Cube固件包浅析

二十四、HAL库框架结构

二十五、如何使用HAL库

二十六、新建HAL版本MDK工程1

二十七、新建HAL版本MDK工程2

二十八、MAP文件浅析

二十九、STM32启动模式

三十、STM32启动过程

三十一、STM32启动过程课堂总结

三十二、STM32CubeMX简介和安装

三十三、新建STM32CubeMX工程步骤

三十四、什么是时钟-认识时钟树(F1)

三十五、认识时钟树(F4)

三十六、认识时钟树(F7)

三十七、认识时钟树(H7)

三十八、系统时钟配置步骤-系统时钟初始化函数(F1)

三十九、系统时钟初始化函数(F4-F7)

四十、系统时钟初始化函数(H7)

四十一、sys文件夹-SysTick工作原理

四十二、delay相关函数介绍

四十三、printf函数输出流程及使用

四十四、printf函数支持

四十五、GPIO简介

四十六、GPIO基本结构介绍

四十七、GPIO八种工作模式分析

四十八、GPIO寄存器介绍

四十九、GPIO配置步骤

五十、GPIO编程实战:点亮一个LED灯

五十一、GPIO编程实战:通过一个按键控制一个LED灯亮灭

五十二、GPIO课堂总结

五十三、什么是中断?

五十四、NVIC概念及工作原理

五十五、STM32中断优先级基本概念及分组

五十六、STM32 NVIC的使用

五十七、EXTI基本概念和主要特性

五十八、EXTI工作原理(F1 F4 F7)

五十九、EXTI工作原理(H7)

六十、EXTI和IO映射关系

六十一、中断的使用和HAL库中断回调处理机制

六十二、GPIO编程实战:通过外部中断控制一个灯亮灭

六十三、中断课堂总结

六十四、数据通信的基础概念

六十五、串口(RS-232)

六十六、STM32的USART介绍和框图

六十七、设置USART波特率(F1)

六十八、设置USART波特率(F4/F7/H7)

六十九、USART寄存器介绍(F1)

七十、HAL库回调机制

七十一、USART异步通信配置步骤

七十二、IO引脚复用功能

七十三、编程实战:通过串口接收或者发送一个字符

七十四、解读例程源码:串口实验

七十五、串口课堂总结

七十六、IWDG简介、工作原理、框图

七十七、IWDG寄存器、溢出时间计算

七十八、IWDG配置步骤

七十九、验证不及时喂狗,系统将复位重启

八十、IWDG课程总结

八十一、WWDG简介、工作原理、框图

八十二、WWDG寄存器、超时时间计算

八十三、WWDG配置步骤

八十四、编程实战:验证窗口看门狗功能

八十五、IWDG和WWDG区别、课堂总结

八十六、定时器概述

八十七、基本定时器简介、框图、计数模式及溢出条件

八十八、定时器寄存器溢出时间计算方法

八十九、定时器中断实验配置步骤

九十、编程实战:定时器中断实验

二、入门篇

三、提高篇

相关推荐
叼烟扛炮23 分钟前
[LangChain] 学习笔记(04):手搓 ChatGPT 打字机——流式输出(SSE)与模型初始化选型
人工智能·笔记·chatgpt·langchain
redtank200036 分钟前
纯血鸿蒙小工具三件套实测:弹幕手持、爱记录与仓库管理软件
学习·华为·智能手机·harmonyos
§ꦿCFོ༉39 分钟前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
李帅朋1 小时前
INP-Former阅读笔记
笔记·深度学习·计算机视觉
Nerd(BUG版)1 小时前
KMP学习day5--Kotlin Flow异步流基础
开发语言·学习·kotlin
叼烟扛炮1 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计
科小怪2 小时前
Obsidian 下载安装:官网下太慢?笔记存自己电脑,不注册不联网
笔记·下载教程·obsidion
叼烟扛炮3 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
水云桐程序员10 小时前
从零开发软件的步骤,软件开发从零到完成应该怎么做?
笔记·学习·软件构建·个人开发