> 文档中心 > STM32学习

STM32学习

文章目录

  • STM32学习笔记
    • 一、STM32简介
    • 二、开发
      • 1、使用软件
      • 2、片上资源 / 外设
      • 3、命名规则
      • 4、芯片的系统结构
      • 5、引脚定义
      • 6、启动配置
      • 7、最小系统电路
    • 三、软件安装及新建工程
      • 1、软件安装
      • 2、建立STM32工程
      • 3、配置调试器
      • 4、配置寄存器
        • 4.1、通过查阅文档进行配置
        • 4.2、通过库函数进行配置
    • 四、型号分类及缩写
    • 五、GPIO
      • 1、基本结构
      • 2、系统结构
      • 3、GPIO位结构
      • 4、GPIO模式
      • 5、LED 和 蜂鸣器介绍
      • 6、GPIO输出的硬件电路
      • 7、GPIO输入的硬件电路
      • 8、传感器模块
      • 9、C语言知识
        • 9.1、数据类型
        • 9.2、宏定义
        • 9.3、typedef
        • 9.4、C语言结构体
        • 9.5、C语言枚举
    • 六、OLED调试工具
      • 1、调试方式
      • 2、OLED简介
      • 3、硬件电路
      • 4、OLED驱动函数
    • 七、EXTI外部中断
      • 1、中断系统
      • 2、中断执行流程
      • 3、STM32中断
      • 4、NVIC基本结构
      • 5、NVIC优先级分组
      • 6、EXTI简介
      • 7、EXTI基本结构
      • 8、AFIO复用IO口
      • 9、EXTI框图
      • 10、旋转编码器
        • 10.1、旋转编码器介绍
        • 10.2、旋转编码器的硬件电路
    • 本文编写参考源于江科大自化协的stm32的教程,视频链接如下:
      • 视频详解:[https://www.bilibili.com/video/BV1th411z7sn?p=1](https://www.bilibili.com/video/BV1th411z7sn?p=1)
      • 视频汇中的资料下载:[https://pan.baidu.com/s/1SqKyKr5Fsl_9gBJi8aVxTw](https://pan.baidu.com/s/1SqKyKr5Fsl_9gBJi8aVxTw),提取码:8kzh,链接里压缩包的解压密码:32

STM32学习笔记

一、STM32简介

  • STM32 是ST公司基于ARM Cortex-M 内核开发的32位微控制器(Microcontroller)
  • STM32 常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
  • STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器
  • 51单片机是8位,而STM32是32位的,性能更优
  • STM32F103C8T6芯片示例如下:
    STM32学习

二、开发

软件包已上传至博主下载资源中

1、使用软件

Keil5 MDK
STM32学习

2、片上资源 / 外设

通过程序配置外设,来完成我们想要的功能
STM32学习

  • NVIC:永不管理中断的设备,比如配置中断优先级
  • SysTick:系统滴答定时器,是系统内核里的一个定时器,只要用来给操作系统提供定时服务,完成任务切换的功能、Delay函数的功能
  • RCC:复位和时钟控制,对系统的时钟进行控制,完成各模块的功能
  • GPIO:通用的IO口,可以用来点灯,读取按键等
  • AFIO:复用IO口,完成复用功能端口的重定义、中断的端口配置
  • EXIT:外部中断,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
  • TIM:定时器,是外设中用到的最多的设备,,TIM分为高级定时器、通用定时器(常用)、基本定时器三种类型。通用定时器是最常用的定时器,它不仅可以完成定时中断的任务还可以完成测频率、生成PWM波形(电机驱动、舵机驱动最基本的要求)、配置成专用的编码器接口等功能
  • ADC:模数转换器,STM32内置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部链接AD芯片,使用方便
  • DMA:直接内存访问,帮助CPU搬用大量数据这样的繁杂任务
  • USART:同步或异步串口,平常使用的UART是异步串口的意思,这里的USARTF是既支持异步串口,也支持同步串口,实际生活中异步串口比较多
  • IC2和SPI:是常用的两种通信协议,STM32页内置了他们的控制器,可以用硬件来输出时序波形,使用起来更高效。
  • CAN和USB:都是通信协议,CAN一般用于汽车领域。利用这个STM32的USB外设,可以做模拟鼠标、模拟U盘等设备
  • RTC:是实时闹钟,在STM32内部完成年月日、时分秒的计时功能,而且可以接外部备用电池,即使掉电也能正常运行
  • CRC校验:是一种数据的校验方式,用于判断数据的正确性
  • PWR:电源控制,可以让芯片进入睡眠模式等状态,来达到省点的目的
  • BKP:备份寄存器,这是一段存储器,当系统掉电时,仍可由备用电池保持数据,根据需要可以完成特殊功能
  • IWDG和WWDG:是独立看门狗和窗口看门狗,当单片机因为电磁干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
  • DAC:数模转换器,它可以在IO口直接输出模拟电压,是ADC模数转换的逆过程
  • SDIO:是SD卡接口,用来读取SD卡
  • FSMC:可变静态存储控制器,可以用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
  • SPI:用OTG功能,可以让STM32座位USB主机去读取其他USB设备

3、命名规则

STM32学习

4、芯片的系统结构

STM32学习

5、引脚定义

在得知芯片的引脚定义时就大概知道该芯片应该怎么使用。一般的都会在数据手册中给出相关使用。如STM32F103C86T芯片引脚如下所示,黑点位置为1号引脚,依次逆时针进行编号。大概有如下这么几类:

  • 电源相关的引脚
  • 最小系统相关的引脚
  • IO口,功能口这些引脚

引脚类型如下:

  • S代表电源
  • I代表输入
  • O代表输出
  • IO代表输入输出
  • IO口电平代表IO口所能容忍的电压,FT代表能容忍5V的电压,无FT的只能容忍3.3V电压,当没有FT但需要容忍5V电压 的时候就需要加装电平转换电路了
    STM32学习

6、启动配置

启动配置其实就是BOTT0BOTT1 两根引脚的功能,
这个启动配置的作用就是指定程序开始运行的位置,一般情况下,程序都是在Flash程序存储器开始执行,但是在某些情况下,我们也可以让程序在别的地方开始执行,用以完成特殊的功能
STM32学习

  • 0 表示接地
  • X 表示无论接什么
  • 1 表示接到3.3V电源正的位置

7、最小系统电路

在知道芯片的引脚功能之后,就需要为它连接最基本的电路,这些最基本的电路就是最小系统电路。如下图所示

STM32学习

三、软件安装及新建工程

1、软件安装

资料下载:https://pan.baidu.com/s/1SqKyKr5Fsl_9gBJi8aVxTw,提取码:8kzh,链接里压缩包的解压密码:32

安装步骤:https://blog.csdn.net/qq_53810245/article/details/123674836

  • 安装器件支持包
  • 软件注册
  • 安装STLINK驱动
  • 安装USB转串口驱动

2、建立STM32工程

STM32学习

STM32学习

详细步骤如下:

STM32学习

在本地新建一个文件夹STM32Project,打开Keil5软件新建工程于该文件夹下
STM32学习

选择芯片型号,点击OK
STM32学习

进入资料中的如下路径

STM32学习
STM32学习
STM32学习
STM32学习

将上述文件拷贝至新建Start文件夹下
STM32学习

STM32学习

STM32学习

STM32学习

STM32学习

STM32学习

STM32学习
STM32学习

STM32学习

建好main.c文件后如图
STM32学习

3、配置调试器

STM32学习
STM32学习
STM32学习

4、配置寄存器

4.1、通过查阅文档进行配置

STM32学习
STM32学习

4.2、通过库函数进行配置

STM32学习
STM32学习

拷贝以上文件夹下的所有库函数到工程中新建Library文件夹下
STM32学习

STM32学习

STM32学习

将如下文件拷贝至User文件夹下
STM32学习
STM32学习
STM32学习

STM32学习

STM32学习

STM32学习

STM32学习

四、型号分类及缩写

STM32学习

五、GPIO

  • GPIO(General Purpose Input Output)通用输入输出口,俗称IO口
  • 可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V
  • 输出模式下可控制端口输出高低电平,用以驱动LED】控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入(光敏电阻、热敏电阻)、ADC电压采集
  • 模拟通信协议接收数据等

1、基本结构

STM32学习

2、系统结构

STM32学习

3、GPIO位结构

STM32学习

4、GPIO模式

  • 通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式
    STM32学习

  • 浮空 / 上拉 / 下拉输入
    STM32学习

  • 开漏 / 推娩输出
    STM32学习

  • 复用开漏 / 推娩输出STM32学习

5、LED 和 蜂鸣器介绍

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

6、GPIO输出的硬件电路

STM32学习

7、GPIO输入的硬件电路

STM32学习

8、传感器模块

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

光敏电阻、热敏电阻、红外接收管均是随外界强度增大而阻值减小

9、C语言知识

9.1、数据类型

STM32学习

9.2、宏定义

STM32学习

9.3、typedef

  • typedef会对命名进行检查,检查是否是变量类型的名字
    STM32学习

9.4、C语言结构体

STM32学习
STM32学习

9.5、C语言枚举

STM32学习

六、OLED调试工具

1、调试方式

  • 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息
  • 显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上
  • Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置点、查看寄存器及变量等功能。

2、OLED简介

  • OLED(Organic Light Emitting Diode):有机发光二极管
  • OLED显示屏:性能优异的新型显示屏,具有功耗低、响应速度快、宽视角、轻薄柔韧等特点
  • 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块
  • 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64
    STM32学习

3、硬件电路

STM32学习

4、OLED驱动函数

STM32学习

七、EXTI外部中断

1、中断系统

  • 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续执行
  • 中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源
  • 中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

2、中断执行流程

STM32学习

3、STM32中断

  • 68个可屏蔽中断通道,包含EXTI、TIM、ADCUSART、SPI、I2C、RTC等多个外设
  • 使用NVIC(就是STM32中用来管理中断、分配优先级的)统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。。

4、NVIC基本结构

NVIC是一个内核外设,是CPU的小助手
STM32学习

5、NVIC优先级分组

决定是不是可以中断嵌套的优先级,叫做抢占优先级
STM32学习

6、EXTI简介

  • EXTI的基本功能。简单来说,就是引脚电平变化,申请中断
  • 中断响应是正常的流程,引脚电平变化触发中断
  • 事件响应不会触发中断,而是触发别的外设操作,属于外设之间的联合工作
    STM32学习

7、EXTI基本结构

STM32学习

8、AFIO复用IO口

  • AFIO主要用于引脚复用功能的选择和重定义
  • 在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择
  • 外部中断同意通用I/O映像如下图STM32学习

9、EXTI框图

STM32学习

  • 或门
    STM32学习

  • 与门
    STM32学习

  • 非门

  • 数据选择器
    STM32学习

10、旋转编码器

10.1、旋转编码器介绍

STM32学习

10.2、旋转编码器的硬件电路

STM32学习

  • 左图为模块的电路图,图里的中间部分就是旋转编码器
  • 旋转轴旋转时,这两个触点以相位相差90度的方式交替导通,要配合外围电路才能输出高低电平
    STM32学习
  • 这个C1 是输出滤波电容,可以防止一些输出信号抖动

注意:

本文编写参考源于江科大自化协的stm32的教程,视频链接如下:

视频详解:https://www.bilibili.com/video/BV1th411z7sn?p=1

视频汇中的资料下载:https://pan.baidu.com/s/1SqKyKr5Fsl_9gBJi8aVxTw,提取码:8kzh,链接里压缩包的解压密码:32