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。

1. STM32学习 STM32综述相关推荐

  1. STM32 | 学习STM32的一些经验分享

    1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今 ...

  2. STM32学习|STM32最小系统介绍

    STM32的最小系统主要有五个部分组成: 电源电路.时钟源电路.BOOT启动电路.调试接口电路.复位电路 MCU: ①电源电路 3.3V的电源从这里接入,其中电容起到滤波的作用. ②时钟源电路 晶振的 ...

  3. 如何系统地入门学习stm32?

    我从事单片机开发多年,用过非常多芯片,有stc.中颖.GD.新唐.BLE.Zigbee.NXP.还有一些国产SOC等等,唯独ST的让我最省心,不管是STM8还是STM32. 省心只要是体现在稳定,只需 ...

  4. 知乎嵌入式大杂烩:学习STM32的一点经验分享

    前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生也问了STM32的入门问题.正好我也有一点经验,所以试着分享一下这个话题.我也不是什么大神,只是一名普通的工程 ...

  5. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)

    继续更新学习STM32的历程,今天学习看门狗. 在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环.为了解决这个问题,产生了一种用于监测单片机程序运行状态的 ...

  6. keil 查看 stm32 io波形_这样学习STM32单片机,从菜鸟到牛人很简单!

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32呢? 这本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考 ...

  7. stm32 web 参数_老司机们都是怎么学习STM32的?

    单片机用处这么广,尤其是STM32,这么火!如何快速上手学习呢? "不要去学STM32".我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对.你问,如何系统地入 ...

  8. stm32学习笔记----双串口同时打开时的printf()问题

    stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...

  9. keil 查看 stm32 io波形_如何系统地入门学习stm32?

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32呢? 这本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考 ...

最新文章

  1. BookBlock - 效果非常真实的书本翻页预览
  2. 010_html事件属性
  3. Python的进程和线程(二)——IO密集型任务
  4. Java Script Closure(js闭包)-浅谈
  5. python取当前时间前后一定间隔的时间点
  6. 关于网络流sap算法
  7. MySQL连接方式:长连接或者短连接
  8. 天池 在线编程 回合制游戏(前缀和)
  9. qrcode生产带logo_比亚迪换新标?新Logo的含义你了解吗?
  10. Mysql错误2003 -Can't connect toMySQL server on 'localhost'(10061)解决办法
  11. Java实现简单的计算器(原创)
  12. ASP.NET MVC资源汇总(本文不断更新)
  13. 程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁
  14. macOS 系统重大安全漏洞:不用密码我也可以玩你的 Macbook
  15. Shell循环输入符合条件为止
  16. 对抗极域电子教室#破解、解除
  17. 第九届GIS应用技能大赛上午(试题及答案含数据)
  18. html5竞赛试题,全国大学生英语竞赛试题
  19. 交互设计师眼中的需求分析
  20. oa系统打不开只能重启服务器,oa系统打不开怎么办-oa系统打不开的解决方法 - 河东软件园...

热门文章

  1. 《约伯记》注释正文 第十三章
  2. 当我们在聊「开源大数据调度系统Taier」的数据开发功能时,到底在讨论什么?
  3. 调用聚合数据新闻头条API接口
  4. html网页不随缩放而变形,html不随放大缩小而变形——initial-scale
  5. python内置函数返回元素个数_Python内置函数
  6. 今日学习在线编程题:幻数
  7. 【论文笔记】Reasoning about Entailment with Neural Attention
  8. iPhone X 适配(全)
  9. webstorm配置环境变量_Webstorm 配置与使用 Less
  10. 视频流媒体服务器ONVIF探测和云台控制是如何设置的?