STM32单片机学习篇1

1.STM32

STM32是S他公司基于ARMCotex-M内核开发的32位微控制器,通常使用在嵌入式开发领域,功能强大,资源丰富,功耗低,是一款经典的嵌入式微控制器

2.STM32F103C8T6(最小系统版)

  • 产品类型:F:通用类型
  • 产品子系列:103增强型,此外有101基本型、105/107互联型
  • 引脚数目:T36脚,此外有C48脚,R68脚
  • 闪存存储器容量:6代表32K字节的闪存存储器,此外有4即16K字节的闪存存储器等
  • 封装:T代表封装的是LQFP,此外还有H即BGA的封装类型等
  • 温度范围:6代表工业级温度范围,即负40°至85°,此外还有7工业级温度范围,最高105°

系列:主流系列STM32F1

内核:ARM Cotex-M3

主频:72Mhz

RAM(运行内存):20K

AOM(程序存储器):64K

供电2.0-3.6V(标准3,3v)

封装:LQFP48(48个引脚)

3.片上资源/外设(不是所有的单片机都具有所有的外设,需根据实际情况)

NVIC嵌套向量中断控制器

SysTick系统滴答定时器

|----------|-----------|----------|-----------|
| 英文缩写 | 名称 | 英文缩写 | 名称 |
| NVIC | 嵌套向量中断控制器 | CAN | CAN通信 |
| SysTick | 系统滴答定时器 | USB | USB通信 |
| RCC | 复位和时钟控制 | RTC | 实时时钟 |
| GPIO | 通用IO口 | CRC | CRC校验 |
| AFIO | 复用IO口 | PWR | 电源控制 |
| EXTI | 外部中断 | BKP | 备份寄存器 |
| TIM | 定时器 | IWDG | 独立看门狗 |
| ADC | 模数转换器 | WWDG | 窗口看门狗 |
| DMA | 直接内存访问 | DAC | 数模转换器 |
| USART | 同步/异步串口通信 | SDIO | SD卡接口 |
| I2C | I2C通信 | FSMC | 可变静态存储控制器 |
| SPI | SPI通信 | USB OTG | USB主机接口 |

4.启动配置

|----------|-------|--------|----------------------------------|
| 启动模式选择引脚 | | 启动模式 | 说明 |
| BOOT1 | BOOT0 | | |
| X | 0 | 主闪存存储器 | 主闪存存储器被选为启动区域(用户程序) |
| 0 | 1 | 系统存储器 | 系统存储器被选为启动区域(需要用到串口下载程序,34-40引脚) |
| 1 | 1 | 内置SRAM | 内置SRAM被选为启动区域(调试用) |

5.最小系统电路

供电电路:只要供电,需要加上滤波电容,稳定供电的作用

晶振电路:主晶振一般都是8zHz

复位电路:先低电平,后高电平

  • 采用阻容复位电路(10kΩ电阻和0.1μF电容)实现上电复位。
  • 可添加手动复位按钮,通过下拉电阻(如10kΩ)和电容(如0.1μF)实现低电平复位。
  • NRST引脚内部有弱上拉,外部电路需避免冲突

启动配置:相当于开关的作用

下载端口:

时钟电路:

STM32支持内部和外部时钟源,外部时钟提供更高精度:

  • 外部高速时钟(HSE):8MHz晶振搭配20pF负载电容,用于系统主时钟。
  • 外部低速时钟(LSE):32.768kHz晶振,用于RTC和低功耗模式。

调试接口:SWD(Serial Wire Debug)是STM32常用的调试接口:

  • 连接SWDIO(PA13)和SWCLK(PA14)引脚,搭配4.7kΩ上拉电阻。
  • 可选添加RESET引脚连接,便于全芯片复位。
  • 调试器(如ST-Link)通过SWD协议与芯片通信。

6.软件安装(软件开发环境)

  • 安装Keil5 MDK
  • 安装器件支持包(kei5需要安装,在线安装相关包比较慢):如果不安装,只有ARM,无法使用STM32创建工程
  • 软件注册(注册后方便使用)
  • 安装STLINK驱动(win+x打开设备管理器,查看是否安装驱动,没有安装会出现感叹号小标)
  • 安装USB转串口驱动

7.新建工程

  • 基于寄存器的方式创建(不建议)
  • 库函数的的创建方式(比较适合学习)
  • HAL的图形化的创建方式(学习底层逻辑之后可以使用,由于隐藏了底层逻辑)

8.创建工程步骤

  • 建立工程文件夹,keil中新建工程,选择型号
  • 工程文件夹里创建Start,Library,User等同名称的分组,然后将文件夹里的文件添加到工程分组里(Startup文件:复位中断即调动systemInit和main函数;其他中断,调用中断和处理函数system文件:送一systemInit,定义main函数,定义中断和处理函数,其他用户文件;stem32f10函数:外设寄存器描述,内核寄存器描述,库函数,库函数的配置)
  • 工程选项,C/C++,Include Paths里声明所有包含头文件的文件夹;Define内定义USE_STDPERIPH_DRIVER;debug下拉列表选择对应调试器,SEttings,Flash Download里勾选Reset and Run,选择调试器来进行下载,用什么就选择什么

9.GPIO简介

  • 通用的输入输出口,可配置为8种输入输出模式

|-----------|--------|-------------------------------|
| 模式名称 | 性质 | 特征 |
| 浮空输入 | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
| 上拉输入(弱上拉) | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
| 下拉输入(弱下拉) | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
| 模拟输入 | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
| 开漏输出 | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
| 推挽输出 | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS |
| 复用开漏输出 | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
| 复用推挽输出 | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |

  • 引脚电平:0v-3.3v(低电平到高电平),部分引脚可容忍5v
  • 输出模式下可控制端口输出.高低电平,用以驱动LED,蜂鸣器,模拟通信协议输出时序等
  • 输入模式下可以读取端口的高低电平和电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据

10.LED与蜂鸣器的简介

  • LED:发光二极管,正向通电点亮,反向通电不亮
  • 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定
  • 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

11.按键简介

  • 按键:常见的输入设备,按下导通,松手断开
  • 按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动

12.传感器介绍

传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出

相关推荐
恶魔泡泡糖2 小时前
51单片机I-O扩展2
单片机·嵌入式硬件·51单片机
lohiecan3 小时前
SD2小电视真正产品级项目-梦丘MOS固件
单片机
梁洪飞3 小时前
kernel 内存知识
linux·arm开发·嵌入式硬件·arm
纳祥科技3 小时前
硬核拆解:一款DP转3VGA+音频输出分配器,3屏同步输出
单片机·嵌入式硬件·音视频·拆解
ElfBoard3 小时前
ElfBoard技术贴|如何在ELF-RK3506开发板上构建AI编程环境
c语言·开发语言·单片机·嵌入式硬件·智能路由器·ai编程·嵌入式开发
橙露4 小时前
STM32 单片机实战:基于 HAL 库的串口通信与中断处理详解
stm32·单片机·嵌入式硬件
__万波__4 小时前
STM32L475跑马灯实验
stm32·单片机·嵌入式硬件
代码游侠4 小时前
ARM 嵌入式开发学习——从内核到外设
arm开发·笔记·嵌入式硬件·学习
兆龙电子单片机设计4 小时前
【STM32项目开源】STM32单片机智能万年历系统
stm32·单片机·开源·毕业设计·智能家居