当前位置: 首页 > article >正文

一、STM32简介

一、实验器材介绍

在这里插入图片描述

二、STM32简介

1.STM32 名词解释

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。

  • ST,指ST公司(意法半导体);
  • M,MicroController 微控制器(MCU,MicroController Unit 微控制器单元/单片机);
  • 32,32位的单片机;
    表示CPU一次可以处理32位数据宽度,即4个字节(现在电脑大多数都是64位);
    这也决定了CPU能直接处理的最大内存地址空间是2^32字节(4GB),也意味着32位CPU最多只能利用4GB的RAM,即使物理上安装了更多的内存,也无法全部访问;
  • ARM Cortex-M内核,即STM32的内部核心部分(包括CPU),由ARM公司设计的;
    ARM公司设计内核,芯片厂商完善外围电路,生产芯片。这些芯片,都叫做基于arm内核的芯片;

2.STM32在嵌入式领域的应用

  • 智能车:例如寻迹小车:读取光电传感器或者摄像头的数据,然后驱动电机前进和转弯;
  • 无人机:读取陀螺仪加速度计的姿态数据,根据控制算法去控制电机的速度,从而保证飞机稳定飞行;
  • 机器人:驱动舵机来控制机器人的关节,让机器人运动;
  • 无线通信/物联网:连接2.4G、蓝牙、WiFi、Zigebee、4G等无线通信模块;
  • 工业控制:PLC,Programmable Logic Controller,可编程逻辑控制器,一种数字运算操作的电子系统,专为工业环境应用而设计。被广泛应用于制造业和过程工业中,用来自动化控制机械流程和设备;
  • 娱乐电子产品:穿戴电子产品、玩具;
  • STM32功能强大、性能优异、片上资源丰富、功耗低、是一款经典的嵌入式微控制器;

3.STM32系列产品

​​​​​​在这里插入图片描述

4.ARM介绍

  • ARM既指ARM公司,也指ARM处理器内核;
  • ARM公司是全球领先的半导体知识产权(IP,intellectual property,知识产权)提供商,即只设计芯片,不生产芯片。全世界超过95%的智能手机和平板电脑都采用ARM架构;
  • ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片;
    在这里插入图片描述
  • ARM系列内核
    在这里插入图片描述

5.课程使用的STM32(STM32F103C8T6)芯片介绍

  • 参数介绍
    • 系列:STM32F1主流系列;
    • 内核:ARM Cortex-M3内核;
    • 主频:最大72MHz;
    • RAM(运行内存):20K(实际存储介质:SRAM);
    • ROM(程序存储器):64K(实际存储介质:Flash);
    • 供电电压:2.0~3.6V(标准3.3V)【注意:USB输出电压是5V,不能直接给STM32供电,需要加一个稳压芯片,把电压降到3.3V,再给STM32供电】
    • 封装:LQFP48,共48个引脚,如下图所示:
      在这里插入图片描述

6.STM32的片上资源/外设(Peripheral)

(注意:以下外设为STM32F1整个系列的所有外设,并不是所有型号都拥有全部外设,具体型号拥有的外设需要查询对应的数据手册)

  • 片上外设的概念
    • 片上外设/片内外设:芯片内部的外设;
    • 片外外设:芯片外部的外设;
      在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • NVIC,Nested Vectored Interrupt Controller,嵌套向量中控制器。内核里用于管理中断的设备,比如配置中断优先级等。
  • SysTick,系统滴答定时器。主要用来给操作系统提供定时服务的。STM32可以加入Free RTOS、RT-Thread、Ucos等实时操作系统,当加入这些操作系统时就需要SysTick提供定时来进行任务切换的功能。
  • RCC,Reset and Clock Control,复位和时钟控制。 STM32中其他的外设在上电后默认是不开启时钟的,此时操作外设是无效的(这样能降低功耗,所以在使用外设之前,需要先用RCC开启对应的时钟)。
  • GPIO, General-purpose I/O,通用IO(Input/Output,输入/输出)。可以用来电灯和读取按键。
  • AFIO,Alternate functions I/O, 复用IO。用来完成复用端口的重定义和中断端口的配置。
  • EXTI,External Interrupt ,外部中断。配置好外部中断后,当引脚的电平按照中断触发条件变化时,就会触发中断,来让CPU处理对应的情况。
  • TIM,Timer,定时器。STM32中最常用,功能最多的外设,分为基本定时器、通用定时器和高级定时器三种类型。高级定时器最复杂,通用定时最常用。这两种定时器都可以完成定时中断、测频率、生成PWM波形、配置成专用的编码器接口等功能。
  • ADC, Analog to Digital Converter,模数转换器。STM32内置了12位的ADC,可以直接读取IO口的模拟电压值,无需外部连接ADC芯片。
  • DMA,Direct Memory Access,直接内存访问。可以帮助CPU完成搬运大量数据的繁杂任务。
  • USART,Universal Synchronous Asynchronous Receiver Transmitter,通用同步异步收发器。既支持同步串口也支持异步串口,实际中使用异步串口比较多。
  • I2C,Inter-Integrated Circuit,集成电路间通信。实现集成电路(IC/芯片)间以半双工串行方式通信的设备。
  • SPI,Serial Peripheral Interface,串行外设接口。实现集成电路(IC/芯片)间以全双工串行方式通信的设备。
  • CAN,Controller Area Network,控制器局域网。一般用于汽车领域。
  • USB,Universal Serial Bus,通用串行总线。可以用该设备做一个模拟鼠标、模拟U盘等设备。
  • RTC,Real Time Clock,实时时钟。实现年月日、时分秒的计时功能。需要接外部电池,即使掉电也能正常运行。
  • CRC,Cyclic Redundancy Check,循环冗余校验。一种数据校验的方式,来判断数据的正确性。
  • PWR, Power Control, 功率控制。可以让芯片进入睡眠模式等状态,来实现省电/低功耗的目的.
  • BKP, Bakup registers,备份寄存器。一段存储器,当系统掉电时,这段存储器由备用电池供电,保持数据。
  • IWDG,Independent WatchDog,独立看门狗。
  • WWDG,Window WatchDog,窗口看门狗。
    当单片机因为程序干扰死机或程序设计不合理出现死循环时,看门狗可以及时复位新芯片,保证系统的稳定。
  • DAC,Digital-to-Analog Converter,数模转换器。可以在IO口直接输出模拟电压。
  • SDIO,Secure digital input/output interface,安全数据输入/输出接口,即SD卡接口。可以用来读取SD卡。
  • FSMC, Flexible static memory controller, 可变静态存储控制器。用于扩展内存或配置成其他总线协议,来操作某些硬件。
  • USB OTG,USB On-The-GO,USB主机接口。一种USB接口标准,允许设备在不需要计算机的情况下直接连接和交换数据。即可以让STM32作为主机去读取其他USB设备。

7.STM32的命名规则

在这里插入图片描述

8.STM32系统结构

在这里插入图片描述

9.STM32F103C8T6引脚定义

在使用一款芯片时,一般需要先着重地看一下其引脚定义。

在这里插入图片描述

  • 引脚划分
    • 橙色的是电源相关的引脚:
    • 蓝色的是最小系统相关的引脚;
    • 绿色的是IO口、功能口相关的引脚;
  • 表头介绍
    • 引脚号和引脚名称:
      与芯片引脚一一对应;
    • 类型:
      S:代表电源;
      I:代表输入;O:代表输出;I/O:代表输入/输出;
    • I/O口电平:代表IO口所能容忍的电压;
      有FT(Five Tolerate),代表能容忍5V的电压;没有FT,代表只能容忍3.3V电压;
      如果没有FT需要接5V的电平,就需要加装电平转换电路;
    • 主功能:
      一般就是上电后默认的功能,一般和引脚名称相同。如果不同的话,引脚的实际功能就
      是主功能,而不是引脚名称对应的功能。
    • 默认复用功能:
      IO口上同时连接的外设功能引脚:
    • 重定义功能:
      如果两个都需要使用的功能同时连接在同一个IO口上,可以把其中一个功能重映射到其他的端口上(前提是重定义功能的表里有对应的端口);
  • 具体引脚介绍
    • pin1:VBAT
      备用电池供电引脚。该引脚可以接一个3V的电池,当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器供电。
    • pin2:PC13-TAMPER_RTC
      • 普通IO口,输出或读取对应引脚的高低电平;
      • tamper(篡改)用来做入侵检测,实现安全保障功能。当产品的安全性要求比较高时,可以在外壳上加一些防拆的触点,然后把这些触电接到这个引脚上。如果有人强拆设备,触点断开,这个引脚的电平变化,就会触发STM32的入侵信号,STM32就会清空数据来保证安全。
    • pin3~pin4:PC14-OSC32_IN、PC15-OSC32_OUT
      • 普通IO口:
      • 接32.768KHZ的RTC晶振;(32.768K = 215,内部RTC电路经过215次方分频,就可以产生1HZ的时间信号了)
    • pin5~pin6:OSC_IN、OSC_OUT
    • 接系统的主时钟,一般是8MHZ。(芯片内部有锁相环电路可以对8MHZ的频率进行倍频,最终产生72MHZ的频率,作为系统的主时钟)
    • pin7:NRST
      系统复位引脚,N代表是低电平复位。
    • pin8~pin9:VSSA、VDDA
      内部模拟部分的供电引脚,比如:ADC,RC振荡器等。
      VSS是负极,接GND;VDD是正极,接3.3V;
    • pin10~ pin19:PA0~ PA7、PB0~PB1;
      普通IO口;
      其中PA0还兼具了WKUP功能(可以用来唤醒处于待机模式的STM32);
    • pin20、pin44:PB2/BOOT1、BOOT2
      普通IO、BOOT1引脚;
      BOOT2引脚;
      【BOOT引脚用来配置启动模式】
    • pin21~pin22
      普通IO;
    • pin23、pin24;pin35、pin36;pin47、pin48:VSS_1、VDD_1;VSS_2、VDD_2;VSS_3、VDD_3;
      这些都是系统的主电源口。STM32内部采用了分区供电的方式,在使用时,把VSS接GND,VDD接3.3V即可。
    • pin25~ pin33:PB12~ PB15;PA8 ~PA12;
      普通IO;
    • pin34、pin37~pin40:
      • 普通IO;
      • 调试端口;(默认的主功能都是调试端口,用来调试程序或下载程序)
        • STM32支持SWD和JTAG两种调试方式。
          • SWD需要两根线,分别是SWDIO和SWDCLK;
          • JTAG需要5根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST;
            【教程中使用STLINK来下载和调试程序,STLINK用的是SWD的方式,只需要使用PA13、PA14两个端口,剩下的PA15、PB3、PB4可以在程序中配置为普通IO口来使用】
    • pin41~ pin43:PB5~PB7
      普通IO;
    • pin45、pin46:PB8~PB9
      普通IO;

10.STM32的启动配置

启动配置,即指定程序开始运行的位置,一般程序都是在Flash程序存储器(主闪存存储器)开始执行的。
在这里插入图片描述

  • BOOT1接0(接GND),BOOT0接x(无论BOOT1接什么都可以)
    启动模式都是主闪存存储器模式,这时候主闪存存储器被选为启动区域,也就是正常的执行Flash闪存里面的程序,这种模式是最常用的模式,一般情况下都是这个配置。
  • BOOT1接0,BOOT0接1(接3.3V)
    启动模式是系统存储器模式,这时候系统存储器被选为启动区域。这个模式就是用来做
    串口下载用的(系统存储器中存的是STM32中的一段BootLoader程序,用来接收串口的数据,然后刷新到主闪存中。)
    一般使用串口下载时,就需要配置成该模式。(当把下载SWD和JTAG的调试端口全部配置成IO口时,就不能使用SWD和JTAG的方式下载程序了,此时就需要使用串口来下载程序;如果没有STLINK和JTLINK,也可以使用串口来下载程序)
  • BOOT1接1,BOOT0接1
    启动模式是内置SRAM模式,这时候内置RAM被选为启动区域。这个模式主要用来程序调试的,用的比较少。
    【BOOT引脚的值是在上电复位后的一瞬间有效的,之后就随便了。】

11.STM32的最小系统

如果要STM32正常工作,就需要把电源部分和最小系统部分的电路连接好。单片机只有一个芯片是无法工作的,需要连接最基本的电路才能正常工作,这个最基本的电路就叫做最小系统电路。
在这里插入图片描述

相关文章:

一、STM32简介

一、实验器材介绍 二、STM32简介 1.STM32 名词解释 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。 ST,指ST公司(意法半导体);M,MicroController 微控制器(MCU,MicroController Unit 微控制器单元/单片机&…...

[ctfshow web入门] web2

前置知识 js是可以写在网页中,用于控制网页行为,例如现在表现出无法使用F12,常见用法校验前台登录时输入的邮箱格式是否正确 ‌view-source‌协议是一种早期就存在的协议,基本上所有主流浏览器都支持这一协议,因此用户…...

torch 拆分子张量 分割张量

目录 unbind拆分子张量 1. 沿着第n个维度拆分(即按“批次”拆分) split分割张量 常用用法: 总结: unbind拆分子张量 import torchquaternions torch.tensor([[1, 2, 3, 4], [5, 6, 7, 8]]) result torch.unbind(quaternio…...

定制一款国密浏览器(2):修改包名

在上一章中,介绍了 chromium 源码的获取和构建deb 包,这一章将修改包名。 我给定制浏览器取名 Mojo Browser,Mojo 这个词来自 Chromium 代码中的 Mojo 跨进程框架,此外 Mojo 隐含有突破困境的内在动力的意思。 所以接下修改包名为 org.mojo.browser,第二就是修改程序的安…...

使用MATIO库读取Matlab数据文件中的多维数组

使用MATIO库读取Matlab数据文件中的多维数组 MATIO是一个用于读写Matlab数据文件(.mat)的开源C库。下面是一个完整的示例程序&#xff0c;展示如何使用MATIO库读取Matlab数据文件中的多维数组。 示例程序 #include <stdio.h> #include <stdlib.h> #include <…...

MySQL篇(五)MySQL主从同步原理深度剖析

MySQL篇&#xff08;五&#xff09;MySQL主从同步原理深度剖析 MySQL篇&#xff08;五&#xff09;MySQL主从同步原理深度剖析一、引言二、MySQL主从同步基础概念主库&#xff08;Master&#xff09;从库&#xff08;Slave&#xff09;二进制日志&#xff08;Binary Log&#x…...

PyQt5和OpenCV车牌识别系统

有需要请加文章底部Q哦 可远程调试 PyQt5和OpenCV车牌识别系统 一 介绍 此车牌识别系统基于PyQt5和OpenCV开发&#xff0c;蓝牌&#xff0c;新能源(绿牌)&#xff0c;黄牌&#xff0c;白牌均可以准确识别&#xff0c;支持中文识别&#xff0c;可以导出识别结果(Excel格式)。此…...

【Android Studio 下载 Gradle 失败】

路虽远行则将至&#xff0c;事虽难做则必成 一、事故现场 下载Gradle下载不下来&#xff0c;没有Gradle就无法把项目编译为Android应用。 二、问题分析 观察发现下载时长三分钟&#xff0c;进度条半天没动&#xff0c;说明这个是国外的东西&#xff0c;被墙住了&#xff0c;需…...

Xshell Plus 6下载与安装

文章目录 Xshell Plus 6 简介&#xff08;一&#xff09;网络连接与协议支持&#xff08;二&#xff09;会话管理&#xff08;三&#xff09;安全特性&#xff08;四&#xff09;文件传输功能&#xff08;因集成Xftp 6 &#xff09;&#xff08;五&#xff09;个性化与便捷功能…...

格式工厂怎样插入内置音频文件

打开格式工厂&#xff0c;在打开的页面选择 “视频” 选项&#xff1b;在视频选项里点击 “混流”&#xff1b;在混流页面右侧点击 “添加文件”&#xff0c;分别添加上视频文件和要插入的内置音频文件&#xff1b;在 “输出设置” 的下拉菜单里&#xff0c;分别选好要输出的视…...

CNN 里面能自然起到防止过拟合的办法

在 CNN&#xff08;卷积神经网络&#xff09;中&#xff0c;其实有 一些结构和机制 天然就具有防止过拟合&#xff08;overfitting&#xff09;的作用&#xff0c;不完全依赖额外的正则化手段。 &#x1f9e0; 一、CNN 天然防过拟合的几个原因&#xff1a; 1️⃣ 局部连接&…...

九、重学C++—类和函数

上一章节&#xff1a; 八、重学C—动态多态&#xff08;运行期&#xff09;-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147004745?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp/cppClassAndFunc.cpp CuiQingCheng/cppstudy - 码云 - 开源中国…...

使用MCP服务器实现AI任务完成通知:让Cursor更智能

0. 简介 在使用AI工具进行长时间任务时&#xff0c;常常需要等待结果。MCP&#xff08;Model Context Protocol&#xff09;服务器"mcp_server_notify"提供了一个优雅的解决方案&#xff0c;让AI在完成任务后通过系统通知提醒你。本文将介绍如何在Cursor中配置和使用…...

解决 Hugging Face SentenceTransformer 下载失败的完整指南:ProxyError、SSLError与手动下载方案

问题背景 在使用 Hugging Face 的 SentenceTransformer 加载预训练模型 all-MiniLM-L6-v2 时&#xff0c;遇到了以下错误&#xff1a; 代理连接失败&#xff08;ProxyError / SSLError: KRB5_S_TKT_NYV&#xff09;大文件下载中断&#xff08;unexpected EOF while reading&a…...

Linux | I.MX6ULL开发板固件烧录所需文件详述(9)

01 搞清楚手里的开发板是 EMMC 还是 NAND FLASH 。默认我的商业级是EMMC ,开关:10011010 终结者i.MX6ULL 开卡板分为工业级和商业级两种不同的开发板。 商业级的核心板,它的存储是 EMMC 的,EMMC 的存储是类似于正方形的芯片,旁边是 NAND FLASH的一个封装,因为我们这里…...

论文阅读笔记:Denoising Diffusion Implicit Models (5)

0、快速访问 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;1&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;2&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08…...

【AI论文】GPT-ImgEval:一个用于诊断GPT4o在图像生成方面的综合基准

摘要&#xff1a;OpenAI的GPT4o模型最近的突破在图像生成和编辑方面展现了令人惊讶的良好能力&#xff0c;引起了社区的极大兴奋。 本技术报告介绍了第一眼评估基准&#xff08;名为GPT-ImgEval&#xff09;&#xff0c;定量和定性诊断GPT-4o在三个关键维度的性能&#xff1a;&…...

CSS3学习教程,从入门到精通, 学院网站完整项目 - HTML5 + CSS3 实现(25)

学院网站完整项目 - HTML5 CSS3 实现 下面是一个完整的学院网站项目&#xff0c;包含主页、新闻列表页、新闻详情页和视频宣传页的实现。我将按照您的要求提供详细的代码和注释。 项目结构 college-website/ ├── index.html # 主页 ├── news-list.html …...

Java虚拟机面试题:内存管理(中)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

如何绕过myabtis-plus的逻辑删除条件

目标 mp中所有方法都会带上逻辑删除,如果启用了逻辑删除,有时候我们需要忽略逻辑删除.改如何实现 解决方法 自定义DeleteReal 方法 import com.baomidou.mybatisplus.core.enums.SqlMethod; import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.ba…...

王者荣耀的游戏匹配机制

王者荣耀的匹配机制主要基于ELO评分系统&#xff08;隐藏分机制&#xff09;和段位匹配&#xff0c;旨在平衡对局双方实力&#xff0c;同时通过多种策略控制玩家胜率趋近50%。 一、匹配机制核心 1. ELO评分&#xff08;隐藏分&#xff09; - 系统根据玩家的胜负、KDA、伤害量、…...

游戏无法启动?XINPUT1_3.dll 丢失的终极解决方案

当你兴奋地启动一款新游戏时&#xff0c;突然弹出一个错误提示——‘程序无法启动&#xff0c;因为计算机中丢失 XINPUT1_3.dll’。这种问题在 PC 玩家中非常常见&#xff0c;尤其是运行一些较老的游戏时。XINPUT1_3.dll 是 DirectX 运行库的关键组件&#xff0c;缺失会导致游戏…...

macOS下SourceInsight的替代品

macOS 推荐的几款开源、轻量级、且功能类似于 SourceInsight 的源码阅读工具&#xff08;排除 VS Code&#xff09;&#xff1a; 1. Zeal&#xff08;离线文档 简单代码导航&#xff09; 官网/GitHub: https://zealdocs.org/特点&#xff1a; 轻量级离线文档浏览器&#xff0…...

嵌入式硬件如何在PADS中将原理图转换为PCB详解

本文旨在讲述如何在PADS中将原理图转换为PCB。 本文以C51原理图作为例子。 1.首先在桌面上打开PADS Logic 2.找到菜单栏的文件选项,然后点击新建。 点击新建之后出现如下界面。...

FreeRTOS 软件定时器工作原理及应用

FreeRTOS 软件定时器工作原理及应用 FreeRTOS 的 软件定时器(Software Timer) 是一种基于系统节拍(Tick)的计时机制,允许开发者创建周期性或单次触发的定时任务,而无需依赖硬件定时器。软件定时器由 定时器服务任务(Timer Service Task) 管理,适用于需要时间控制但无…...

软件工程-UML

例图&#xff0c;类图&#xff0c;状态图&#xff0c;顺序图&#xff0c;活动图 目录 例图 类图 状态图 顺序图 活动图 例图 例图由四个元素组成&#xff0c;参与者、用例、系统边界、参与者和用例之间的关系 参与者用一个小人表示&#xff0c;用例用椭圆表示&#xff…...

力扣经典算法篇-9-跳跃游戏(贪心算法,反向递推)

题干&#xff1a; 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 …...

【Linux学习笔记】初识进程概念和进程PCB

【Linux学习笔记】初识冯诺依曼体系和进程PCB &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】初识冯诺依曼体系和进程PCB前言一. 冯诺依曼体系结构1.1 关于冯诺依曼体系的要点&#xff1a; 二. 操…...

深入探索 Linux Top 命令:15 个实用示例

在 Linux 系统管理中&#xff0c;top 命令是系统性能监控不可或缺的工具。它能够实时显示系统的 CPU、内存、进程等资源的使用情况&#xff0c;帮助您快速识别性能瓶颈和异常进程。本文将详细介绍 15 个实用的 top 命令使用示例&#xff0c;旨在帮助您更高效地进行系统管理与优…...

Linux命令-cut

cut 命令是一个非常实用的工具&#xff0c;用于从文本中提取特定部分。 参数 功能 -b 按字节提取内容 -c 按字符提取内容 -f 按字段提取内容&#xff0c;需配合 -d 指定分隔符 -d 指定字段分隔符&#xff08;默认是 \t&#xff09; -s 只处理包含分隔符的行 –complement 提取除…...