1. STM32学习 STM32综述

  1. 什么是STM32

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器(MCU),学习使用的是STM32F1系列,内核为Cortex-M3。

STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。

2. ARM

ARM既指ARM公司,也指ARM处理器内核。

ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片 。

3. STM32F103C8T6

•系列:主流系列STM32F1

•内核:ARMCortex-M3

•主频:72MHz

•RAM:20K(运行内存,实际存储介质是SRAM)

•ROM:64K(程序存储器,实际存储介质是Flash内存)

•供电:2.0~3.6V(标准3.3V)(区别于51单片机的5v

•封装:LQFP48

4. ★片上资源/外设

其中NVIC 和 SysTick为位于内核里的外设,其他为内核外的外设。

  • NVIC:内核里面用于管理中断的设备,比如:配置终端优先级。

  • SysTick:内核里面的一个定时器,主要用来给操作系统提供定时服务,利用SysTick提供定时进行任务切换的功能。(本次学习主要用SysTick实现Delay函数的功能)。

  • RCC:复位和时钟控制,可以对系统的时钟进行配置,还可以使能各模块的时钟。在STM32中,其他的外设在上电的情况下默认是没有时钟的,不给时钟的情况下,操作设备是无效的,外设不会工作,这样的目的是降低功耗。所以在操作设备之前,必须先使能时钟,我们需要用RCC来完成使能。

注意:使能“使能”的第二个语义常见诸电子技术专业文献,与英文‘Enable’对应,意思是允许电子器件的某个管脚(引脚)、芯片或模块开启某个预设的功能、进入预设的状态。

  • GPIO:通用的IO口,我们可以用GPIO进行点灯,读取按键等。

  • AFIO:复用的IO口,完成复用功能端口的定义,还有中断端口的配置。

  • EXTI:外部中断,配置好外部中断后,当引脚有电平发生变化后,就可以触发中断,让CPU来处理任务。

  • TIM:定时器,分为高级定时器、通用定时器、基本定时器三种类型,不仅可以完成定时器终端的任务,还可以完成测绘率、生成PWM波形、配置成专用的编码器接口等功能。

  • ADC: 模数转换器,STM32内置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部连接AD芯片。

  • DMA:直接内存访问,帮助CPU完成搬运大量数据这样的繁杂任务。

  • USART:同步或者异步串口。

  • UART: 异步串口。

  • I2C:基本通信协议。

  • SPI:基本通信协议。

  • CAN: 基本通信协议。

  • USB:基本通信协议。

  • RTC: 实时时钟,在STM32内部完成年月日、时分秒的计时功能,而且可以接外部电池,即使掉电也能正常工作。

  • CRC:CRC校验一种数据的校验方式,用于判断数据的正确性。

  • PWR: 电源控制,可以让芯片进入睡眠模式等状态,来达到圣殿目的。

  • BKP:备份寄存器,这是一段存储器,当系统掉电时,仍可以由备用电池保持数据,这个根据需要,可以完成一些特殊功能。

  • IWDG和WWDG时独立看门狗和窗口看门狗,当单片机因为电磁干扰司机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定。

  • DAC: 模数转换器,它可以在IO口直接输出模拟电压,是ADC模数转换的逆过程。

  • SDIO口: SD卡接口,可以用来读取SD卡。

  • FSMC:可变静态存储控制器,可用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作。

  • USB OTG就是USB主机接口去读取其他USB设备。

5. STM32芯片的名命规则

所以STM32F103C8T6,是48脚,64K字节的闪存存储器,

LQFP封装,工业级温度范围:-40℃~85℃

注意:我们可以根据命名规则了解大致参数。

6. ★系统结构

我们分为4个部分来看

  • 内核引出三条总线,分别是ICode指令总线,DCode数据总线,System系统总线。

  • 内核引出的ICode指令总线和DCode数据总线,主要用来连接Flash闪存,Flash里面存储的是我们编写的程序,ICODE指令总线用来加载程序指令,DCode数据总线是用来加载数据的,比如常量和调试参数。

  • 内核引出的System总线连接到其他上面,例如SRAM(用于存储程序运行时其他变量数据)。

  • AHB系统总线:用来挂载主要的外设,AHB是指高性能总线,挂载是基本的或者性能比较高的外设,如复位、时钟控制,SDIO

  • 与AHB系统总线相连的两个桥接,接到了APB2和APB1两个外设总线上。APB是先进外设总线,用于连接一般外设,因为AHB和APB的总线协议、总线速度、还有数据传输格式的差异,所以中间需要加两个桥接来完成数据的转换和缓存。

  • APB2的性能比APB1性能好,所以APB2连接的都是一般外设中稍微重要的部分,例如GPIO端口、1号外设(USART1、SPI1、TIM1)、TIM8、ADC、EXTI、AFIO等。其他2、3、4、5号外设加上DAC、PWR、BKP等接在APB1上。

  • DMA:DMA通过总线连接到总线矩阵上,它可以拥有和CPU一样的总线控制权,用于访问这些外设,转运其中数据。作用是大量数据搬运,防止数据覆盖。

7. ★芯片的引脚定义及功能

7.1 芯片引脚图示

左上角小黑点位置左边的引脚为1号引脚,然后逆时针依次排列直到48号引脚。

7.2 引脚名称以及功能

上图中:

  • 标记为红色为电源相关的引脚。

  • 标记为蓝色为最小系统相关的引脚。

  • 标记为绿色的是IO口、功能口相关的引脚

  • 类型一列中:S代表电源、I代表输入、O代表输出、I/O代表输入输出

  • I/O口电平:代表I/O口所能容忍的电压,FT代表它能容忍5V电压,没有FT只能容忍3.3V电压。

  • 主功能:默认上电后的功能,一般和引脚名称相同,如果不同的话,引脚的实际功能是主功能而不是引脚名称的功能。

  • 默认复用功能:IO口上同时连接的外设功能引脚,这个配置IO口的时候可以选择是通用IO口还是复用功能。

  • 重定义功能:如何有两个功能同时复用在一个IO口上,而我们同时需要两个功能,那么我们可以把一个功能重映射到其他端口上。

7.3 引脚定义

  • 1号引脚VBAT: 备用电池供电引脚,可以接一个3V的电池。当系统电源断电时备用电池可以给内部的RTC时钟和备份寄存器提供电源。

  • 2号引脚接 IO口/侵入检测/ RTC :IO口可以根据程序输出读取高低平,侵入检测可以做安全保障功能。RTC引脚可以用来输出RTC校准时钟,RTC闹钟脉冲或者秒脉冲。

  • 3、4.号引脚IO口或者接32.768kHz的RTC晶振

  • 5、b 号引脚接系统的主晶振,一般为8MHz.芯片内有锁相环电路,对8MHz进行倍频,形成72MHz的频率,作为系统的主时钟。

  • 7号NRST是系统的复位引脚,N代表他是低电平复位。

  • 8、9号引脚是内部模拟部分的电源,如ADC, RC覆荡器等。VSS负疚,接GND。VDD是正极接3.3V.

  • 10-->19号引脚都是IO口, 其中PA0还兼具了WKUP的功能,用于唤醒外于待机模式的STM32。

  • 20号引脚是 B00T引脚, BOOT 用来配置启动模式。

  • 21、22 号引脚为IO口。

  • 23、24号引脚VSS_1、VDD_1为系统的主电源口,VSS为负极、VDD为正极。

  • 35 、36、47、48作用同上,采用分区供电方式。

  • 25-33号引脚为IO口。

  • 34号、27-->40号,都为IO口或者调试端口。

  • STM32支持SWD和JTAG两种调试方法。

  • SWD需要两根线分别是SWDIO和SWCLK。(ST-LINK)

  • JTAG需要5根线,分别是JTMS 、JTCK、 JTDI、 JTDO、 NJTRST。

  • 41-->43、 45-->46都为IO口。

  • 44号是BOOT0,用来做启动配置

8. STM32启动配置

注意:只有上电瞬间BOOT才有效

作用:指定程序开始运行的位置。

一般情况下,程序是在Flash程序存储器开始执行。

系统存储器是STM32中的一段BootLoader(接收串口数据,然后刷新到主闪存中)。

9. STM32最小系统电路

核心板原理图

STM32供电部分:主电源和模拟电源都连接了供电引脚,VSS都连接了GND,VDD都连接了3.3V,3.3V和GND之间一般都连接一个滤波电容,这个电容可以保证供电电压的稳定。

晶振电路:接了一个8MHz的主时钟晶振,STM32的主晶振一般都尉8MHz。8MHz经过内部锁相环倍频,得到72MHz的主频。晶振得两根引脚同个两个网络标号接到STM32的5、6号引脚。另外还需要接两个20pF电容,作为起震电容,电容的另一端接地即可。如果需要RTC功能的话,好需要再接一个32.768KHz的晶振(OSC32),电路接在3、4号引脚。

复位电路:电路由10k的电阻和0.1uF的电容组成,用来给单片机提供复位信号,NRST接在STM32的7号引脚,NRST为低电平复位,复位电路在上电的瞬间,电容是没有电的。电源通过电阻开始向电容充电,并且此时电容呈现短路状态,那NRST引脚就会产生低电平,当电容逐渐充满电时,电容就相当于断路,此时NRST就会被R1上拉为高电平,所以上电瞬间的波形就是先低电平,然后逐渐高电平,低电平就可以提供STM32的上电复位信号。并且我们可以通过K1按键手动复位,按下按键,电容放电,并且NRST引脚也通过按键被直接接地了,这就相当于手动产生了低电平复位信号。按键松手后,NRST又回归为高电平,此时单片机就从复位状态转化为工作状态。

启动配置:H1相当于开关的作用,拨动开关就可以让BOOT引脚选择接3.3V还是GND。在我所使用的最小系统板上,使用的是跳线帽来充当开关功能,当跳线帽插在左边两个角时相当于接地,插在右边就相当于接3.3V。

下载端口:若使用ST-LNK下载程序,那么我们需要SWDIO和SWCLK这两个引脚引出来方便接线。另外需要引出3.3V和GND。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值