【嵌入式软件-STM32】STM32简介

目录

        一、STM32定义

        二、STM32用途

        三、STM32特点

        四、STM32 四个系列

        五、了解ARM

        六、芯片解释

        七、片上资源

        八、命名规则

        九、系统结构

        内核

        Flash

        DMA

        外设种类和分布

        十、引脚定义

        类型

        名称

        引脚

        十一、启动配置

        十二、STM32最小系统电路

                STM32及供电

        供电引脚

        滤波电容

        VBAT

        晶振

        复位

        启动配置(BOOT配置电路)

        下载端口

        十三、最小系统板实物图


tips:以下都是自己在网课学习整理的总结跟归纳~可能有自己偏向(就是详略啦~)ヾ(◍°∇°◍)ノ゙(嗯哼 因为大部分都是网课内容而已 主要是拿来自用而已~ 所以感兴趣可以自己去看同款江协网课——

简介

一、STM32定义

基于ARM Cortex-M内核开发的32位微控制器

二、STM32用途

智能车——循迹小车: 读取光电传感器/摄像头数据——驱动电机前进和转弯

无人机——读取陀螺仪加速计的姿态数据、根据控制算法去控制电机的速度——保证飞机稳定飞行

机器人——驱动舵机、控制机器人关节——让机器人运动

无线通信——连接上一些2.4G无线模块或蓝牙、WIFI模块——无线通信功能

物联网——借助无线模块来通信(如蓝牙、WIFI、ZigBee),STM32驱动继电器来控制220V电路的通断

工业控制——PLC,工厂用来进行工业控制

娱乐电子产品——爱心流水灯等(也可以弄lysk语音交流传输)

三、STM32特点

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

四、STM32 四个系列

高性能系列、主流系列、超低功耗系列、无线系列

CoreMark——内核跑分,跑分越高性能越好;

五、了解ARM

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

(所以芯片可以理解为 基于各内核与完整电路连线组成)


ARM系列:1)经典系列 ARM1 ~ ARM11

                   2)Cortex-A  性能最高,发展最快

                        Cortex-R(Real Time)面向实时性很高的场景

                        Cortex-M(Mircrocontroller)主要用于单片机领域(such STM32)

六、芯片解释

RAM:运行内存    实际存储介质SRAM

ROM:程序存储器 实际存储介质Flash闪存

与51不同,51为5V供电,不能直接给STM32供电,若用5V,则需加稳压芯片,把电压降到3.3V再给STM32供电

自画板子的话,则需了解封装

七、片上资源

NVIC 与 SysTick 为Cortex-M3内核里的外设,其余为内核外的外设

NVIC -嵌套向量中断控制器:用于管理中断的设备,比如配置中断优先级等东西

SysTick-系统滴答定时器:用于给操作系统提供定时服务的(Delay函数的功能)(STM32 可加入操作系统,如FreeRTOS、UCOS等,如果用操作系统,就需要SysTick提供定时来进行任务切换的功能)

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

GPIO—通用IO口:可用于点灯、读取按键等(最基本的功能)

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

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

TIM—定时器:最常用、功能最多的外设分高级定时器,通用定时器,基本定时器三种;最复杂->高级定时器,常用->通用定时器;不仅可以完成定时中断,还可以完成测频率、生成PWM波形(电机驱动、舵机驱动最基本的要求)、配置成专用的编码器接口等功能

ADC-模数转换器:STM32配置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部连接AD芯片,使用方便~~

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

USART—同步/异步串口通信:平时用的UART是异步串口的意思;此处USART既支持异步串口,也支持同步串口;

I2C—I2C通信:(与SPI为)两种常用的通信协议。STM32中配置了它们的控制器,可以用硬件来输出时序波形,使用起来高效;(用通用IO口来模拟时序波形也可以)

SPI-SPI通信:通信协议

CAN-CAN通信:通信协议,一般用于汽车领域

USB—USB通信:通信协议,可做模拟鼠标、模拟U盘等设备

RTC-实时时钟:在STM32内部完成年月日、时分秒的计时功能,可接外部备用电池,计时掉电也能正常运行

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

PWR-电源控制:可以让芯片进入睡眠模式等状态,以达到省电的目的

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

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

WWDG-窗口看门狗:同上

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

SDIO-SD卡接口:可以用来读取SD卡

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

USB OTG-USB主机接口:用OTG功能,可以让STM32作为USB主机去读取其他USB设备

八、命名规则

fd046481a08d4070aa5356c73a64f5aa.jpg

九、系统结构

09e5fad56513400795cd9dfed74e55fa.jpg

可以将系统分成四部分:内核、Flash、DMA、外设种类和分布

内核

连接着 三条总线
ICode-指令总线:用来加载程序指令的

DCode-数据总线:用来加载数据的(如常量、调试数据)

ICode 与 DCode 主要用来连接Flash闪存

System—系统总线

Flash

存储的为用户编写的程序

DMA

DMA,可以看作内核CPU的“小秘书”;

如有大量的数据搬运,让CPU来干则有点浪费时间,如有个外设ADC模数转换,这个模数转换可以配置成连续模式,用CPU会费时费力,影响CPU正常工作
DMA:负责简单且反复要干的事情,如数据搬运

2) DMA解析:

DMA通过DMA总线连接到总线矩阵上,可以拥有和CPU一样的总线控制权,用于访问外设;当需要DMA搬运数据时,外设会通过请求线发送DMA请求,然后DMA就会获得总线控制权,访问并转运数据(整个过程不需要CPU参与,省下了CPU的时间来干别的事情)

外设种类和分布

SRAM:用于存储程序运行时的变量数据

AHB系统总线(AHB-先进高性能总线):用于挂载主要的外设,挂载的一般是最基本的或性能比较高的外设

APB(APB-先进外设总线):用于连接一般的外设

1)桥接:

因为AHB和APB的总线协议、总线速度还有数据传送格式的差异,所以中间需要加两个桥接,来完成数据的转换和缓存

差异:

(AHB的整体性能比APB高一些,APB2性能比APB1高一些,APB2一般是和AHB同频率,都是72MHz,APB1一般是36MHz)

(所以APB2连接的都是一般外设中稍微重要的部分 如GPIO端口,还有一些外设的1号选手等 如UASRT1、SPI1、TIM1、TIM8(TIM8和TIM1一样,也是高级定时器,所以也是重要的外设)、还有ADC、EXTI、AFIO也是接在APB2上面的)

(其他的像2、3、4、5号外设、DAC、PWR、BKP等次要一点的外设都会分配到APB1上去)

十、引脚定义

(黑点左边为1号引脚,引脚按逆时针依次排序,直至48号引脚)

标红色的为电源相关的引脚;标蓝色的为最小系统相关的引脚;标绿色的为IO口、功能口引脚

类型:

        S——电源

         I——输入

        O——输出

        I/O——输入输出

名称:

I/O口电平:代表I/O口所能容忍的电压,FT——代表能容忍5V电压,无FT则只能容忍3.3V电压;若无FT的要接5V电平的,需要加装电平转换电路

主功能:上电后默认的功能,一般与引脚名相同,但引脚的实际功能以主功能为主,而非引脚名称的功能

默认服用功能:为I/O口上同时连接的外设功能引脚,在配置I/O口中可以选择通用I/O口或是复用功能

重定义功能:如果有两个功能同时复用在了I/O口上,而确实两个功能都需用到的话,可以把其中一个复用功能重映射到其他端口上,前提为重定义功能表里有对应的端口

引脚:

01.VBAT:备用电池供电的引脚,可接3V电池;当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源

02.PC13-TAMPER-RTC:为I/O口,或侵入检测,或RTC;

        I/O口可根据程序输出或读取高低电平(最基本最常用的功能);

        侵入检测可用来做安全保障的功能,如产品安全性比较高,可在外壳加一些防拆的触点,接电路到该引脚上,若有人强行拆开设备,触点断开,该引脚的电平变化会触发STM32的侵入信号,然后会清空数据来保证安全;(可以理解为 有异常波动即立刻清空)

        RTC引脚可用来输出RTC校准时钟、RTC闹钟脉冲或秒脉冲

03.PC14-OSC32_IN  

&04.PC15-OSC32_OUT:是I/O口或接32.768KHz的RTC晶振

05.OSC_IN

&06.OSC_OUT:接系统的主晶振,一般为8MHz,芯片内部有锁相环电路,可以对这个8MHz的频率进行倍频,最终产生72MHz的频率,作为系统的主时钟

07.NRST:系统复位引脚,N代表低电平复位

08.VSSA

&09.VDDA:内部模拟部分的电源,如ADC、RC震荡器等;VSS为负极,接GND,VDD为正极,接3.3V;

10.PA0-WKUP

&11.PA1  &12.PA2  &13.PA3  &14.PA4  &15.PA5  &16.PA6  &17.PA7  &18.PB0

&19.PB1:都为I/O口,其中PA0兼具了WKUP的功能,可用于唤醒处于待机模式的STM32

20.PB2:是I/O口,或BOOT1引脚;BOOT引脚是用来配置启动模式的

(比起20号引脚(未加粗),更推荐使用10~19号以及21、22号引脚等(加粗),因为未加粗的I/O口可能需要进行配置或者兼具其他功能,使用时需要留意一下)

21.PB10 

&22.PB11:为I/O口

23.VSS_1  &24.VDD_1

35.VSS_2  &36.VDD_2

47.VSS_3  &48.VDD_3:都为系统的主电源口;VSS为负极,VDD为正极

STM32内部采用了分区供电的方式,所以供电口比较多,使用时,VSS接GND,VDD接3.3V即可

25.PB12  &26.PB13  &27.PB14  &28.PB15  &29.PA8  &30.PA9  &31.PA10  &32.PA11 

&33.PA12:都为I/O口

34.PA13  &37.PA14  &38.PA15  &39.PB3

&40.PB4:为I/O口或调试端口,默认主功能为调试端口,调试端口是用来调试程序和下载程序的

STM32支持SWD和JTAG两种调试方式,SDW需要两根线,分别是SWDIO和SWCLK;JTAG需要五根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST;

(本教材使用的事STLINK来下载调试程序,STLINK用的是SWD的方式,即只需占用34号PA13与37号PA14两个I/O口即可,在使用SWD调试方式时,剩下的PA15、PB3、PB4可以切换为普通I/O口来使用,但要在程序中进行配置,不配置的话默认是不会用作I/O口的)

41.PB5  &42.PB6  &43.PB7  &45.PB8 

&46.PB6:都为I/O口

44.BOOT0:同BOOT1一样,也是用来做启动配置的

十一、启动配置

即为BOOT0 与 BOOT1 两个引脚的功能

启动配置的作用:指定程序开始运行的位置,一般情况下,程序都是在Flash程序存储器开始执行,但在某些情况下,可以让程序在别的地方开始执行,用以完成特殊功能

如表6:

BOOT0接0(即接地),无论BOOT1接什么,启动模式都是主闪存存储器,即主闪存存储器被选为启动区域,也就是正常执行Flash闪存里面的程序(一般情况下最常用的模式)

BOOT1接0(即接地),BOOT0接1(即接3.3V电源正),启动模式都是系统存储器,即系统存储器被选为启动区域

该模式是用作串口下载用的

(这个系统存储器存的就是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的数据,然后刷新到主闪存中,这样就可使用串口下载程序了 )

(一般需要串口下载程序的时候会配置到这个模式上;①救急:若将以下五个端口全配置为I/O口,该芯片没有调试端口,下载不了程序,则这种情况就需要用串口的方式下载程序了;②没有STLINK,也没有JLINK,则可以使用串口来进行下载程序,多了一种下载程序的方式)

BOOT1接1(即接3.3V电源正),BOOT0接1(即接3.3V电源正),配置的是内置SRAM启动

该模式主要用来进行程序调试,用得少;

tips:

BOOT引脚的值是在上电复位后的一瞬间有效,之后可随便了;引脚定义中,BOOT1和PB2是在同一个引脚上(20.PB2),即上电的瞬间是BOOT1的功能,当第4个时钟过后就为PB2的功能了

十二、STM32最小系统电路

STM32及供电

        供电引脚

         该3个分区供电的主电源(如下图)

        与模拟部分电源(如下图)都连接了供电引脚(VSS->GND,VDD->3V3)

       

       滤波电容

        对于供电非常必要,连接在VSS与VDD之间,可以保证供电电压的稳定

        VBAT

        接备用电池,备用电池是给RTC和备用寄存器服务的,如不需这些功能则不用接备用电池,VBAT直接接3.3V或悬空即可

        如接3V的纽扣电池(如下图),正极接VBAT,负极接GND

晶振

接了8MHz的主时钟晶振,STM32的主晶振一般都为8MHz,8MHz经过内部锁相环倍频,得到72MHz的主频;

晶振的两个引脚分别通过这两个网络标号,连接到STM32的5、6号引脚;

另外还需要接两个20pF的电容,作为启震电容,电容的另一端接地即可;

如果需要RTC功能的话,还需要再接一个32.768KHz的晶振,电路和这个一样,接在3、4号引脚(OSC32就是32.768KHz晶振的意思,32768=2^{15},内部RTC电路经过2的15次方分频,就可以生成1秒的时间信号了)

复位

图为上电瞬间的波形

该复位电路是由一个10k的电阻0.1uF的电容组成(uF-微法),用来给单片机提供复位信号;

NRST接在STM32的7号引脚,NRST为低电平复位,即当该复位电路在上电的瞬间,电容是没有电的,电源通过电阻开始向电容充电,并且此时电容呈现的是短路状态,那NRST引脚会产生低电平;当电容逐渐充满电时,电容相当于断路,此时NRST就会被R1上拉为高电平,上电瞬间的波形为“先低电平,逐渐上拉为高电平”,其中的低电平就可以提供STM32的上电复位信号

(由于电容充电速度快,所以宏观来看,单片机在上电的一瞬间复位了)

电容左边并联了一个按键,可以提供手动复位的功能,当按下按键时,电容被放电,并且NRST引脚也通过按键被直接接地了,相当于手动产生了低电平复位信号;按键松手后,NRST又回归高电平,此时单片机就从复位状态转为工作状态

(复位按键平时一般在设备的小孔上,当设备死机且不方便断电重启时,可以拿针戳一下小孔里的按键,就可以使设备复位了,即为手动复位功能,按下按键,程序就从头开始运行)

启动配置(BOOT配置电路)

H1相当于开关的作用,拨动这个开关,就可让BOOT引脚选择接3.3V或是GND了

在最小系统板上,使用的是(如下图)这种跳线帽来充当开关的功能,当跳线帽插在左边两个脚时,就相当于接地;插在右边两个脚时,就相当于接3.3V,这样就可以配置BOOT的高低电平了

如若自己设计电路的话,接一个拨码开关也是没问题的,比插跳线帽要方便一些

跳线帽 插左边两个脚=接地

跳线帽 插右边两个脚=接3.3V

下载端口

如果是用STLINK下载程序,则需要把SWDIOSWCLK这两个引脚引出来方便接线

另外需把3.3VGND引出来,GND是必须引出来的,如果板子自己有供电的话,3.3V可以不引(但建议都引出来,方便一点)

十三、最小系统板实物图

(正面)

黑色芯片-STM32F103C8T6

左边两个跳线帽,用来配置BOOT引脚

复位按键

USB接口,可以进行USB通信,也可以为板子供电

8MHz的主时钟晶振

32.768KHz的RTC晶振

两个LED,上面为PWR电源指示灯,下面为接在PC13口的测试灯

SWD的调试接口,用来下载程序的

上下两排为用于接线的排针

(背面)

5个脚小芯片-3.3V稳压芯片

其余为电阻电容这些小元件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559186.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习:循环神经网络RNN

目录 一、神经网络的历程 1.传统神经网络存在的问题 2.提出一种新的神经网络 二、RNN基本结构 1.RNN基本结构 2.RNN的独特结构 3.RNN的局限性 一、神经网络的历程 1.传统神经网络存在的问题 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。因为传统…

十年网络安全工程师谈学习网络安全的正确顺序

当今数字化时代,网络安全行业如守护数字世界的坚固堡垒,其重要性愈发凸显。随着信息技术的迅猛发展,我们的生活、工作、社交等方方面面都与网络紧密相连,从个人隐私信息到企业核心数据,再到国家关键基础设施乃至全球互…

什么是Cookie 它有什么作用 及如何使用Session-Cookie方案进行身份验证 总结

Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。 维基百科是这样定义 Cookie 的: Cookies 是某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。 简单来说&#xff1…

实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)

一、简介 VLLM 是一种高效的深度学习推理库,通过PagedAttention算法有效管理大语言模型的注意力内存,其特点包括24倍的吞吐提升和3.5倍的TGI性能,无需修改模型结构,专门设计用于加速大规模语言模型(LLM)的…

网站排名,让网站快速有排名的几个方法

要让网站快速获得并提升排名,需要综合运用一系列专业策略和技术,这些策略涵盖了内容优化、技术调整、外链建设、用户体验提升等多个方面。以下是让网站快速有排名的几个方法: 1.内容为王:创造高质量、有价值的内容 -深入…

The Android SDK location cannot be at the filesystem root

win11, 安装启动完Android Studio后,一直显示 The Android SDK location cannot be at the filesystem root因此需要下载SDK包,必须开启代理。 开启代理后,在System下开启自动检测代理,如图 重启Android Studio&a…

Ubuntu双卡训练过程中电脑总是突然重启【解决方法】

本来以为是温度过热造成的,发现不是,因为在重启的瞬间,gpu温度并没有特别高。 参见视频如下: 双卡训练过程中gpu温度监测 然后尝试了另一种方法: 限制gpu显卡的功率 具体操作如下: 先检查当前gpu功率限…

[论文阅读] DVQA: Understanding Data Visualizations via Question Answering

原文链接:http://arxiv.org/abs/1801.08163 启发:没太读懂这篇论文,暂时能理解的就是本文提出了一个专门针对条形图问答的数据集DVQA以及一个端到端模型SANDY,模型有两个版本,Oracle和OCR。主要解决的问题是固定词表无…

IPguard vs Ping32:防泄密软件的巅峰对决,哪款是你的理想选择

在当今这个数字化时代,数据安全已成为企业不可忽视的重要议题。为了有效防范数据泄露风险,众多企业开始寻求专业的防泄密软件。IPguard与Ping32作为两款备受关注的防泄密软件,各自以其卓越的性能和独特的功能,赢得了广大用户的青睐…

线程(五)线程的同步和互斥——线程信号量

文章目录 线程线程的同步和互斥线程的同步和互斥--线程信号量示例--使用线程信号量来控制线程执行的先后顺序示例--使用信号量实现线程之间的互斥示例--使用信号量实现线程之间的同步 死锁线程状态转换 线程 线程的同步和互斥 线程的同步和互斥–线程信号量 上边讲了互斥的方…

力扣HOT100合集

力扣HOT100 - 1. 两数之和 解题思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[] …

操作系统-系统调用

应用程序调用printf(),会触发系统调用write() 1、概念 操作系统服务的编程接口&#xff0c;通常由高级语言编写&#xff08;C/C&#xff09;&#xff0c;程序访问通常是通过高层次的API接口而不是直接进行系统调用。 2、三种最常用的应用程序编程接口&#xff08;API&#xf…

Vue深入了解

Vue深入了解 MVVMv-model (双向数据绑定原理)异步更新keep-alive原理$nextTick原理computed 和 watch 的区别css-scoped虚拟DOMVuex && PiniaVue-router原理proxy 与 Object.defineProperty组件通信方式 MVVM <!DOCTYPE html> <html lang"en">&…

AD原理图编译出现Net XX has no driving source

提示无驱动电压源&#xff0c;这是因为你的芯片管脚设置了电气属性造成的。 两种解决AD中出现Net has no driving source警告的方法。 方法一&#xff1a;取消电气属性检测&#xff0c;但不推荐&#xff1b; 打开原理图编译项&#xff0c;将NET no driving source 修改为no …

PostgreSQL的学习心得和知识总结(一百五十三)|[performance]将 OR 子句转换为 ANY 表达式

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

树控件QTreeWidget

树控件跟表格控件类似&#xff0c;也可以有多列&#xff0c;也可以只有1列&#xff0c;可以有多行&#xff0c;只不过每一行都是一个QTreeWidgetItem&#xff0c;每一行都是一个可以展开的树 常用属性和方法 显示和隐藏标题栏 树控件只有水平标题栏 //获取和设置标题栏的显…

PPT在线画SWOT分析图!这2个在线软件堪称办公必备!

swot分析ppt怎么做&#xff1f; swot分析是一个非常常用的战略分析框架&#xff0c;经常会在ppt中使用。想在ppt中绘制swot分析图&#xff0c;使用自带的形状工具可以制作出来&#xff0c;但绘制效率不够高&#xff0c;在需要大批量制作的场景下&#xff0c;会让人非常心累………

DepthB2R靶机打靶记录

一、靶机介绍 下载地址&#xff1a;https://download.vulnhub.com/depth/DepthB2R.ova 二、信息收集 根据靶机主页显示&#xff0c;确认靶机ip为192.168.242.132 端口扫描 nmap -p- -A 192.168.242.132 发现只开放了8080端口 用dirsearch扫个目录 apt-get update apt-get …

基于LORA的一主多从监测系统_0.96OLED

关联&#xff1a;0.96OLED hal硬件I2C LORA 在本项目中每个节点都使用oled来显示采集到的数据以及节点状态&#xff0c;OLED使用I2C接口与STM32连接&#xff0c;这个屏幕内部驱动IC为SSD1306&#xff0c;SSD1306作为从机地址为0x78 发送数据&#xff1a;起始…

【Linux】基本认知全套入门

目录 Linux简介 Linux发行版本 发行版选择建议 Centos-社区企业操作系统 Centos版本选择 Linux系统目录 Linux常用命令 SSH客户端 Linux文件操作命令 vim重要快捷键 应用下载与安装 netstat&#xff0c;ps与kill命令使用 Linux应用服务化 Linux用户与权限 Linu…