1. STM32学习 STM32综述

2023-05-16

  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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. STM32学习 STM32综述 的相关文章

  • c项目makefile多重定义错误

    这个问题是一个对应于创建的repexthis问题 在我的嵌入式 C 项目中 我有两个独立的板 我想为每个板创建两个 c 文件 master c 和 Slave c 其中包含自己的特定main 功能 我使用 stm32cumbemx 生成带有
  • 以字符串形式接收数字(uart)

    我正在尝试通过 uart 接收一个包装为字符串的数字 我发送数字 1000 所以我得到 4 个字节 空字符 但是 当我使用 atoi 将数组转换为数字并将整数与 1000 进行比较时 我并不总是得到正确的数字 这是我用于接收号码的中断处理函
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 当数据大小较小时,内存到内存 DMA 传输是否需要权衡?

    我正在学习 STM32 F4 微控制器 我正在尝试找出使用 DMA 的限制 根据我的理解和研究 我知道如果数据量较小 即设备使用DMA生成或消耗少量数据 则开销会增加 因为DMA传输需要DMA控制器执行操作 从而不必要地增加系统成本 我做了
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • STM32超声波——HC_SR04

    文章目录 一 超声波图片 二 时序图 三 超声波流程 四 单位换算 五 取余计算 六 换算距离 七 超声波代码 一 超声波图片 测量距离 2cm 400cm 二 时序图 1 以下时序图要先提供一个至少10us的脉冲触发信号 告诉单片机我准备
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • 硬件基础-电容

    电容 本质 电容两端电压不能激变 所以可以起到稳定电压作用 充放电 电容量的大小 想使电容容量大 使用介电常数高的介质 增大极板间的面积 减小极板间的距离 品牌 国外 村田 muRata 松下 PANASONIC 三星 SAMSUNG 太诱
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板

随机推荐

  • ROS基础 - dynamic_reconfigure 动态参数

    ROS基础 dynamic reconfigure 动态参数使用 实例详解 采用 ROS dynamic reconfigure 的形式 xff0c 可以在程序运行过程中实时更改参数大小 xff0c C 43 43 代码通过回调函数接收数据
  • C_C++变量命名规则

    C C 43 43 变量命名规则 变量命名规则是为了增强代码的可读性和容易维护性 以下为C 43 43 必须遵守的变量命名规则 xff1a 1 变量名只能是字母 xff08 A Z xff0c a z xff09 和数字 xff08 0 9
  • Git 初次提交代码

    Git 初次提交发布代码 首先打开 bash 出现git的命令行 可以在GitHub上新建一个仓库 这是提交了的代码的仓库 xff0c 刚创建的时候只有 README md 和 gitignore 两个文件 xff01 在进入git的命令行
  • MATLAB 快速绘制曲线图的形状,粗细,颜色

    目录 MATLAB 快速绘制曲线图的形状 xff0c 粗细 xff0c 颜色1 通过改变R G B 的值改变线条的颜色 xff1a 2 通过改变c 1 43 的值改变线条的粗细 xff1a 3 线条形状 xff0c 粗细 xff0c 颜色选
  • STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结

    摘自 xff1a STM32F103五分钟入门系列 xff08 一 xff09 跑马灯 xff08 库函数 43 寄存器 xff09 43 加编程模板 43 GPIO总结 作者 xff1a 自信且爱笑 发布时间 xff1a 2021 04
  • Git的安装(附安装包)

    目录 使用目的关于Git的历史Git的安装1 运行安装包 xff0c 点击next2 选择安装路径 xff0c 下一步3 点击next4 设置开始菜单 xff0c 默认next5 点击next6 选择git的方式7 剩下所有步骤均默认即可8
  • GPIO输入输出模式原理(八种工作方式附电路图详解)

    这几篇博文讲的不错 xff0c 可参照着理解 xff1a STM32下拉输入模式与振动传感器的使用 上拉电阻与下拉电阻 通俗解读 上 下拉电阻 xff08 定义 强弱上拉 常见作用 吸电流 拉电流 灌电流 xff09 个人总结 xff1a
  • 树莓派接入公网(花生壳)

    参考 xff1a 树莓派接入公网 作者 xff1a 图触靓 发布时间 xff1a 2020 12 22 17 28 19 网址 xff1a https blog csdn net bhbhhyg article details 107994
  • 深入理解STM32内存管理

    参考 xff1a 详解ROM和RAM 作者 xff1a 嵌入式实验楼 网址 xff1a https mp weixin qq com s y2aG7kX 6CTyeMzEJW YHw 内存相关博文 xff1a 1 内存四区 xff08 代码
  • React Props

    state 和 props 主要的区别在于 props 是不可变的 xff0c 而 state 可以根据与用户交互来改变 所以 xff0c 有些容器组件需要定义 state 来更新和修改数据 而子组件只能通过 props 来传递数据 pro
  • Chrome如何下载网页视频

    目录 第一步 xff1a 右键 xff0c 选择 检查 指令 xff0c 进入代码控制面板第二步 xff1a 单击代码面板左上角红色标出来的按钮 xff0c 然后鼠标移到左边视频上第三步 xff1a 双击src后面的代码 xff08 全部展
  • MODBUS通讯协议详解(基于485)

    参考 xff1a 灵育科技Modbus课程总结 作者 xff1a Naunyang 时间 xff1a 2020 11 23 13 51 58 网址 xff1a https blog csdn net Naunyang article det
  • 步进电机、伺服电机、舵机、无刷电机、有刷电机区别

    参考 xff1a 步进电机 伺服电机 舵机的原理和区别 xff1f Vincross的回答 知乎 地址 xff1a https www zhihu com question 37374664 answer 167299936 目录 什么是电
  • 面经——嵌入式常见面试题总结100题(下)

    参考 xff1a 嵌入式常见面试题总结 xff08 1 xff09 作者 xff1a 天泉证道 发布时间 xff1a 2018 11 08 09 33 43 网址 xff1a https guoyanzhang blog csdn net
  • 4种整流电路、5种滤波电路

    目录 基本电路变压电路整流电路半波整流电路全波整流电路桥式整流电路倍压整流电路 滤波电路电容滤波电路电感滤波电路RC滤波电路LC滤波电路有源滤波电路 整流滤波电路总结常用整流电路性能对照常用无源滤波电路性能对照电容滤波电路输出电流大小与滤波
  • 焊接技巧(热风枪/QFP/QFN/SOP/穿孔/烙铁头/助焊膏/连锡/飞线/回流焊)

    https www bilibili com video BV1wJ411B73v p 61 1 amp vd source 61 cc0e43b449de7e8663ca1f89dd5fea7d
  • C语言如何跳出多重循环

    目录 前言一 题目示例二 解决方法1 使用goto语句2 使用状态标志 总结 参考 xff1a https blog csdn net qq 45797595 article details 122278580 ops request mi
  • 第一个hadoop入门程序WordCount

    要导入hadoop文件夹中share下的common文件夹中的几个包和lib下的包 xff0c 以及mapreduce中相应的包 package com yootk mr demo import java io IOException im
  • 4种版本控制工具

    1 Visual Source Safe VSS xff09 VSS是美国微软公司的产品 xff0c 是配置管理的一种很好的入门级的工具 xff08 window系统 xff09 VSS的配置管理的功能比较基本 xff0c 提供文件的版本跟
  • 1. STM32学习 STM32综述

    什么是STM32 STM32是ST公司基于ARM Cortex M内核开发的32位微控制器 MCU 学习使用的是STM32F1系列 xff0c 内核为Cortex M3 STM32功能强大 性能优异 片上资源丰富 功耗低 xff0c 是一款