资讯详情

STM32学习

文章目录

  • STM32学习笔记
    • 一、STM32简介
    • 二、开发
      • 1、使用软件
        • 1.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.1.介绍旋转编码器
        • 10.2.旋转编码器的硬件电路
    • 八、定期中断
      • 1.定期中断基本结构和使用步骤
      • 2.需要使用的函数
    • 九、TIM输出比较
      • 1、输出比较简介
      • 2、PMW简介
      • 3.输出比较通道(高级)理解
      • 4.输出比较通道(通用)
      • 5.输出比较模式
      • 6、PWM基本结构
      • 7、参数计算
      • 8.直流电机及驱动简介
      • 9、舵机简介
      • 10.舵机的硬件电路
      • 11、
    • 本文的编写参考来源于江科大自化协stm视频链接如下:
      • 视频详解:[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芯片示例如下: 在这里插入图片描述

二、开发

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

1、使用软件

Keil5 MDK

1.1、书签工具

2、片上资源 / 外设

我们想要的功能是通过程序配置外设来完成的

3、命名规则

4、芯片的系统结构

5、引脚定义

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

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

引脚类型如下:

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

6、启动配置

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

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

7、最小系统电路

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

三、软件安装及新建工程

1、软件安装

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

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

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

2、建立STM32工程

详细步骤如下:

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

选择芯片型号,点击OK

进入资料中的如下路径

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

建好main.c文件后如图

3、配置调试器

4、配置寄存器

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

4.2、通过库函数进行配置

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

将如下文件拷贝至User文件夹下

四、型号分类及缩写

五、GPIO

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

1、基本结构

2、系统结构

3、GPIO位结构

4、GPIO模式

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

  • 浮空 / 上拉 / 下拉输入

  • 开漏 / 推娩输出

  • 复用开漏 / 推娩输出

5、LED 和 蜂鸣器介绍

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

6、GPIO输出的硬件电路

7、GPIO输入的硬件电路

8、传感器模块

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

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

9、C语言知识

9.1、数据类型

9.2、宏定义

9.3、typedef

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

9.4、C语言结构体

9.5、C语言枚举

六、OLED调试工具

1、调试方式

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

2、OLED简介

3、硬件电路

4、OLED驱动函数

七、EXTI外部中断

1、中断系统

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

2、中断执行流程

3、STM32中断

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

4、NVIC基本结构

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

5、NVIC优先级分组

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

6、EXTI简介

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

7、EXTI基本结构

8、AFIO复用IO口

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

9、EXTI框图

  • 或门

  • 与门

  • 非门

  • 数据选择器

10、旋转编码器

10.1、旋转编码器介绍

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

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

八、定时中断

1、定时中断基本结构及使用步骤

  • 第一步:RCC开启时钟,是每个代码的第一步
  • 第二步:选择时基单元的时钟源,对于定时中断,我们选择内部时钟源
  • 第三步:配置时基单元 ,包括预分频器、自动重装器、计数模式等等,可以用结构体进行配置
  • 第四步:配置输出中断控制,允许更新中断输出到NVIC
  • 第五步:配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级
  • 第六步:运行控制
  • 整个模块配置完成后,我们还需要使能一下计数器,要不然计数器是不会运行的,当定时器使能后,计数器就会开始计数了,当计数器更新时,触发中断。这个时候我们再写一个中断函数,这样这个中断函数就能每隔一段时间自动执行一次

2、需要用到的函数

  • TIM_Delnit,恢复缺省配置
  • TIM_TimeBaselnit,时基单元初始化,用来配置时基单元,函数内部有两个参数,一个是TIMx选择某个定时器,第二个是结构体,里面包含了配置时基单元的一些参数
  • TIM TimeBaseStructInit,可以把结构体变量赋一个默认值
  • TIM Cmd,这个是用来使能计数器的,它有两个参数,第一个TIMx选择定时器,第二个NewState新的状态,也就是使能还是失能,使能,计数器就可以运行,失能,计数器就不运行
  • TIM_ITConfig,这个是用来使能中断输出信号的,负责中断输出控制,它有两个参数。第一个TIMx,选择定时器。第二个TIM_IT,选择要配置哪个中断输出,第三个NewState,表示新的状态,是使能还是失能

九、TIM输出比较

1、输出比较简介

  • OC(Output Compare) 输出比较
  • 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形(PWM波形又是驱动电机的必要条件)
  • 每个高级定时器和通用定时器都拥有4个输出比较通道
  • 高级定时器的前3个通道额外拥有死区生成和互补输出的功能

如果想用STM32做一些有电机的项目,比如智能车、机器人等,就需要好好学习输出比较功能,在此处不做过多的阐述,大家可以在视频中找到这一节进行学习

2、PMW简介

  • PMW(Pulse Width Modulation)脉冲宽度调制
  • 在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,长应用于电机控速等领域
  • PWM参数:

3、输出比较通道(高级)【了解】

4、输出比较通道(通用)

5、输出比较模式

此处的输出模式即为上图中的输出模式控制器的内容

6、PWM基本结构

  • 蓝色线是CNT的值,蓝色线从0开始自增,一直增到ARR(即99),之后清0继续自增
  • 黄色线是ARR的值
  • 绿色线是输出的电平

7、参数计算

8、直流电机及驱动简介

  • 直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反转时,电机反转
  • 直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作
  • TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制转速和方向

9、舵机简介

  • 舵机是一种根据输入PWM信号占空比来控制输出角度的装置
  • 输入域PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

10、舵机的硬件电路

11、

注意:

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

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

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

标签: 电容etr54c8分类电阻器sd2060p二极管stm8外接传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台