STM32——1 综述

1 综述

1.1 课程介绍

在这里插入图片描述

1.2 硬件设备

在这里插入图片描述

1.3 软件设备

在这里插入图片描述

1.4 套件介绍

在这里插入图片描述

1.5 STM32简介

  • STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器;
  • STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等;
  • STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器;
  • 下图表示STM32有四个系列,每个系列都有不同的产品;
    • 高性能系列;
    • 主流系列;
      • 本课程使用的就是STM32F1系列;
    • 超低功耗系列;
    • 无线系列;
      在这里插入图片描述

1.6 ARM

  • ARM既指ARM公司,也指ARM处理器内核;
  • ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构;
  • ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片;
  • 下右图中:
    • 蓝色是ARM公司生产的老版本的内核,是一些经典的ARM处理器;
    • Cortex-A系列适用于高端应用领域,是ARM内核中性能最高、发展最快的系列;
    • Cortex-RCortex-M系列适用于嵌入式领域;
      • R就是RealTime的意思,主要面向实时性很高的场景,比如硬盘控制器;
      • M就是MicroController的意思,主要应用在单片机领域;
        在这里插入图片描述

1.7 STM32F103C8T6

  • 系列:主流系列STM32F1;

  • 内核:ARM Cortex-M3;

  • 主频:72MHz;

  • RAM:20K(SRAM);

    • RAM,即运行内存,实际的存储介质是SRAM;
  • ROM:64K(Flash);

    • ROM,即程序存储器,实际的存储介质是Flash闪存;
  • 供电:2.0~3.6V(标准3.3V);

    • 51单片机是5V;
  • 封装:LQFP48;

    • 共有48个引脚;
      在这里插入图片描述
  • 片上资源/外设:

    • 高亮的两个外设是位于Cortex-M3内核里面的外设,剩下的都是内核外的外设;
    • 注意:这是STM31F1整个系列的所有外设,并不是所有的型号都有全部的外设,比如此次使用的C8T6芯片就没有第二列最下面四个外设;
    • 具体有什么外设,每个外设有几个,需要查询手册;
    英文缩写名称英文缩写名称
    NVIC嵌套向量中断控制器CANCAN通信
    SysTick系统滴答定时器USBUSB通信
    RCC复位和时钟控制RTC实时时钟
    GPIO通用IO口CRCCRC校验
    AFIO复用IO口PWR电源控制
    EXTI外部中断BKP备份寄存器
    TIM定时器IWDG独立看门狗
    ADC模数转换器WWDG窗口看门狗
    DMA直接内存访问DAC数模转换器
    USART同步/异步串口通信SDIOSD卡接口
    I2CI2C通信FSMC可变静态存储控制器
    SPISPI通信USB OTGUSB主机接口
    • NVIC:嵌套向量中断控制器。内核里面用于管理中断的设备,比如配置中断优先级;
    • SysTick:系统滴答定时器。是内核里面的一个定时器,主要是用来给操作系统提供定时服务的;
      • STM32是可以加入操作系统的,比如FreeRTOS、UCOS等。如果用了这些操作系统,就需要SysTick提供定时,来进行任务切换的功能;
      • 本课程不需要操作系统,可以使用这个定时器来完成Delay函数的功能;
    • RCC:复位和时钟控制。可以对系统的时钟进行配置,还可以使能各模块的时钟;
      • 在STM32中,其它的外设在上电的情况下默认是没有时钟的。不给时钟的情况下,操作外设是无效的,外设也不会工作,这样子的目的是降低功耗。所以,在操作外设之前,必须先使能它的时钟,此时就需要RCC来完成时钟的使能;
    • GPIO:通用IO口。可以用GPIO来点灯,读取按键等;
    • AFIO:复用IO口。可以完成复用功能端口的重定义,还有中断端口的配置;
    • EXTI:外部中断。配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务;
    • TIM:定时器。这是整个STM32最常用、功能最多的外设,TIM分为高级定时器(最复杂)、通用定时器(最常用)和基本定时器三种类型。这个定时器不仅可以完成定时中断的任务,还可以完成测频率、生成PWM波形、配置成专用的编码器接口等功能;
    • ADC:模数转换器。是STM32内置的12位的AD转换器,可以直接读取I/O口的模拟电压值,无需外部连接AD芯片,使用非常方便;
    • DMA:直接内存访问。可以帮助CPU完成搬运大量数据这样的繁杂任务;
    • USART:同步/异步串口通信。平时用的UART是异步串口的意思,这里的USART是既支持同步,又支持异步;
    • I2C:I2C通信;
    • SPI:SPI通信。和上面的I2C是两种非常常用的通信协议,STM32内置了它们的控制器,可以用硬件来输出时序波形,使用起来更高效,当然也可以使用I/O口来模拟时序波形也是可以的;
    • CAN:CAN通信。通信协议,一般用于汽车领域;
    • USB:USB通信。通信协议,利用STM32的USB外设,可以做一个模拟鼠标、模拟U盘等设备;
    • RTC:实时时钟。在STM32内部完成年月日、时分秒的计时功能,而且可以接外部电池,即使掉电也可以正常运行;
    • CRC:CRC校验。CRC校验是一种数据校验方式,用于判断数据的正确性。有了这个外设的支持,进行CRC校验就会更加方便一点;
    • PWR:电源控制。可以让芯片进入睡眠模式等状态,以达到省电的目的;
    • BKP:备份寄存器。这是一段存储器,当系统掉电时,仍可由备用电池保持数据,这个根据需要,可以完成一些特殊功能;
    • IWDG:独立看门狗;
    • WWDG:窗口看门狗。当单片机因为电磁干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定;
    • DAC:数模转换器。可以在I/O口直接输出模拟电压,是ADC模数转换的逆过程;
    • SDIO:SD卡接口。可以用来读取SD卡;
    • FSMC:可变静态存储控制器。可以用来扩展内存,或者配置成其它总线的协议,用于某些硬件的操作;
    • USB OTG:USB主机接口。用OTG功能,可以让STM32作为USB主机去读取其它USB设备;
  • 命名规则:
    在这里插入图片描述

  • 系统结构:
    在这里插入图片描述

    • Cortex-M3内核引出三条总线,分别是ICode指令总线、DCode数据总线、System系统总线;
      • ICode指令总线和DCode数据总线是用来连接Flash闪存的,Flash里面存储的就是我们编写的程序;
      • ICode指令总线用来加载程序指令;
      • DCode数据总线用来加载数据,比如常量和调试参数;
    • System系统总线连接上了许多外设;
      • SRAM,用于存储程序运行时的变量数据;
      • FSMIC,本课程中的芯片不会用到;
      • AHB(Advanced High Performance Bus,先进高性能总线)系统总线,挂载的一般是最基本的或者性能比较高的外设,比如复位和时钟控制(RCC)这些最基本的电路,还有SDIO;
      • AHB系统总线后面有两个桥接,接到了APB1和APB2两个外设总线上;
        • 因为AHB和APB的总线协议、总线速度,还有数据传送格式的差异,所以中间需要加两个桥接,来完成数据的转换和缓存;
        • AHB的整体性能要比APB高一些,APB2的性能又比APB1的性能高一些。APB2一般是和AHB同频率的,都是72MHz,APB1一般是36MHz,所以APB2连接的一般是外设中比较重要的部分,比如GPIO端口,还有外设的1号选手,比如UASRT1、SPI1、TIM1、TIM8(和TIM1一样都是高级定时器)、ADC、EXTI、AFIO;
        • PB1的意思是先进外设总线,用于连接一般的外设。其它的2、3、4、5号外设,还有DAC、PWR、BKP等,这些次要一点的外设,都被分配到APB1上
        • 在使用的时候,个人一般感觉不到APB1和APB2的性能差异,只需要知道外设是挂载到哪个总线上即可;
    • DMA通过DMA总线连接到总线矩阵上,它可以拥有和CPU一样的总线控制权,用于访问外设;
      • 当需要DMA搬运数据时,外设就会通过DMA请求线向DMA发送请求,然后DMA就会获得总线控制权,访问并转运数据,整个过程不需要CPU的参与;
  • 引脚定义:

    • 红色是电源相关引脚;
    • 蓝色是最小系统相关引脚;
    • 绿色是IO口、功能口引脚;
    • 引脚分类:S代表电源、I代表输入、O代表输出、I/O代表输入输出;
    • I/O口电平表示该I/O口所能容忍的电压,有FT的表示可以容忍5V的电压,没有FT的则只能容忍3.3V;
      • 若没有FT的却需要接5V的电平,就需要加装电平转换电路了;
    • 主功能是上电后默认的功能,一般和引脚名称相同;
      • 若不同,则引脚的实际功能是主功能,而不是引脚名称的功能;
    • 默认复用功能是I/O口上同时连接的外设功能引脚;
      • 配置I/O口的时候可以选择是主功能还是默认复用功能;
    • 重定义功能是指:如果有两个功能同时复用在了一个I/O口上,而确实需要同时用到这两个功能,就可以把其中一个功能重映射到其他端口上;
      • 前提是该重定义功能的表里有对应的端口;
        在这里插入图片描述
    • 1号引脚:VBAT,是备用电池供电的引脚。在这个引脚可以接一个3V的电池,当系统端电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源;
    • 2号引脚:I/O口或侵入检测或RTC;
      • I/O口可以根据程序输出或读取高低电平;
      • 侵入检测可以用来做安全保障的功能。比如可以在外壳加一个防拆的触点,然后接上电路到这个引脚上,若有人强行拆开设备,该触点断开,那个引脚的电平变化就会触发STM32的侵入信号,然后就会清空数据来保障安全;
      • RTC引脚可以用来输出RTC校准时钟、RTC闹钟脉冲或秒脉冲;
    • 3、4号引脚:I/O口或接32.768KHz的RTC晶振;
    • 5、6号引脚:接系统的主晶振,一般是8MHz。芯片中有锁相环电路,可以对这个8MHz的频率进行倍频,最终产生72MHz的频率,作为系统的主时钟;
    • 7号引脚:NRST,系统复位引脚,N代表它是低电平复位;
    • 8、9号引脚:内部模拟部分的电源,比如ADC、RC振荡器等;
      • VSS是负极,接GND;VDD是正极,接3.3V;
    • 10~19号引脚:I/O口;
      • 10号引脚:PA0,还兼具了WKUP的功能,可以用于唤醒处于待机模式的STM32;
    • 20号引脚:I/O口或BOOT1引脚;
      • BOOT引脚用于配置启动模式;
      • 该引脚名称没有加粗,在使用I/O口时更加推荐加粗的I/O口,没有加粗的I/O口,可能需要配置或兼具其它功能;
    • 21、22号引脚:I/O口;
    • 23、24号引脚:VSS_1和VDD_1是系统的主电源口;
      • VSS是正极,VDD是负极;
      • VSS_2、VDD_2、VSS_3和VDD_3均是系统的主电源口;
      • 因为STM32内部采用了分区供电的方式,所以供电口比较多;
    • 25~33号引脚:I/O口;
    • 34、37~40号引脚:I/O口或调试端口,主功能是调试端口;
      • 调试端口是用来调试或下载程序的;
      • STM32支持SWD和JTAG两种调试方式;
        • SWD需要两根线,分别是SWDIO和SWCLK;
        • JTAG需要五根线,分别是JTMS、JTCK、JTDI、JTDO和NJTRST;
      • 本课程使用的是STLINK来调试程序,STLINK使用的是SWD的方式,所以只需要占用PA13和PA14这两个I/O口。在使用SWD的调试方式时,剩下的PA15、PB3和PB4可以当成普通的I/O口来使用,但要在程序中进行配置,不配置的话默认是不会用作I/O口的;
    • 41~43号引脚、45~46号引脚:I/O口;
    • 44号引脚:BOOT0引脚,用于做启动配置;
  • 启动配置:

    • 启动配置的作用就是指定程序开始运行的位置;
    • 一般情况下,程序都是在Flash程序存储器开始执行。但是在某些情况下,也可以让程序在别的地方开始执行,用以完成特殊的功能;
    • BOOT1接X(就是随便接什么都可以),BOOT0接0时,启动模式就是上面讲的一般情况;
    • BOOT1接0,BOOT0接1(接3.3V电源)时,启动模式就是系统存储器,即系统存储器被选为启动区域;
      • 其实这个模式就是用来做串口下载的,在需要使用串口下载程序的时候会配置到这个模式;
      • 此处的系统存储器存的就是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的数据,然后刷新到主闪存中;
      • 那什么时候需要用到串口下载呢?
        • 情况一:34和37~40号引脚是调试端口,他们既可以用来下载程序,也可以当做普通的I/O口来使用。如果在程序中把这5个端口全部配置成了I/O口,就会导致这个芯片没有调试端口了,也就是下载不了程序,此时就可以通过串口的方式来下载程序;
        • 情况二:若没有STLINK和JLINK,那么也可以使用串口来下载程序;
    • BOOT1接1,BOOT0接1时,此时配置的是内置SRAM启动,该模式主要用来程序调试;
      在这里插入图片描述
    • 上图中最下面的那一句话的意思是:在上电的瞬间,20号引脚是BOOT1的功能。当第4个时钟过后,就是I/O口的功能;
  • 最小系统电路:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失散13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值