STM32入门学习(一):STM32 简介与软件安装

参考引用

  • STM32 入门教程-江科协

1. STM32 简介

1.1 STM32 套件介绍

在这里插入图片描述

1.2 STM32 简介

  • STM32 是 ST 公司基于 ARM Cortex-M 内核开发的 32 位微控制器
    • 应用:嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等

在这里插入图片描述

1.3 ARM 介绍

  • ARM 既指 ARM 公司,也指 ARM 处理器内核
    • ARM 公司是全球领先的半导体知识产权(IP)提供商,全世界超过 95% 的智能手机和平板电脑都采用 ARM 架构
    • ARM 公司设计 ARM 内核,半导体厂商完善内核周边电路并生产芯片

在这里插入图片描述

1.4 STM32F103C8T6

  • 核心参数
    • 系列:主流系列STM32F1
    • 内核:ARM Cortex-M3
    • 主频:72MHz
    • RAM:20K(运行内存,存储介质为 SRAM)
    • ROM:64K(程序存储器,存储介质为 Flash 闪存)
    • 供电:2.0~3.6V
      • 标准 3.3V,常用 USB 供电电压为 5V,不能直接给 STM32 供电,需要加一个稳压芯片降到 3.3V 再供电
    • 封装:LQFP48

在这里插入图片描述

1.5 片上资源/外设(Peripheral)

  • 主要学习的内容就是 STM 的外设,通过程序配置外设,来完成想要的功能
    • NVIC 和 SysTick 是位于 Cortex-M3 内核里面的外设,其余都是内核外的外设
    • NVIC:内核里面用于管理中断的设备
      • 比如配置中断优先级
    • SysTick:用来给操作系统提供定时服务
      • 该 STM32 可加入 FreeRTOS 操作系统,如果要使用操作系统,就需 SysTick 提供定时来进行任务切换
      • 还可用来完成 Delay 函数功能
    • RCC:对系统的时钟进行配置,使能各模块的时钟
      • 在 STM32 中,其它的这些外设在上电的的情况下默认是没有时钟的,不给时钟的情况下操作外设是无效的,这样设计的目的是降低功耗,所以操作外设之前必须先使能它的时钟
    • GPIO:通用 IO 口,用来点灯,读取按键等
    • AFIO:可以完成复用功能端口的重定义,还有中断端口的配置
    • EXIT:配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
    • TIM:STM32 中最常用、功能最多的外设
      • 分为高级定时器、通用定时器、基本定时器三种类型
      • 通用定时器最常用,可以完成测频率、生成 PWM 波形、配置成专用的编码器接口等功能
    • ADC:该 STM32 内置了 12 位的 AD 转换器
      • 可以直接读取 IO 口的模拟电压值,无需外部连接 AD 芯片
    • DMA:帮助 CPU 完成搬运大量数据等这样的繁杂任务
    • USART:平常用的 UART 更多是异步串口
    • I2C 和 SPI:常用的通信协议
      • STM32 内置了它们的控制器,可以用硬件来输出时序波形,也可用通用 IO 口来模拟时序波形
    • CAN:通常用于汽车领域的通信协议
    • USB:利用这个 STM32 的 USB 外设可以做一个模拟鼠标、模拟 U 盘的设备
    • RTC:在 STM32 内部完成年、月、时分秒的计时功能
      • 还可接外部备用电池,即使掉电也能正常运行
    • CRC:一种数据的校验方式,用于判断数据的正确性
    • PWR:让芯片进入睡眠模式等状态,来达到省电的目的
    • BKP:这是一段存储器,当系统掉电时,仍可由备用电池保持数据
    • IWDG 和 WWDG:当单片机因为电磁干扰死机或程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
    • DAC:可以在 IO 口直接输出模拟电压
    • SDIO:用来读取 SD 卡
    • FSMC:用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
    • USB OTG:用 OTG 功能,可以让 STM32 作为 USB 主机去读取其他 USB 设备

在这里插入图片描述

1.6 芯片命名规则

在这里插入图片描述

1.7 系统结构

  • ICode 指令总线、DCode 数据总线、System 系统总线
    • ICode:指令总线用来加载程序指令
    • DCode:数据总线用于加载数据
    • AHB:系统总线用于挂载主要的外设,AHB 意思是先进高性能总线
    • APB:先进外设总线,用于连接一般的外设
    • DMA:辅助内核 CPU 处理一些简单且重复性高的事项,比如负责一些大量数据搬运的处理,通过 DMA 总线连接到总线矩阵上,拥有和 CPU 一样的总线控制权,用于访问外设

在这里插入图片描述

1.8 引脚定义

在这里插入图片描述

1.8.1 选项解释
  • 类型
    • S 代表电源,I 代表输入,O 代表输出,I/O 代表输入输出
  • I/O 口电平
    • 代表 I/O 口所能容忍的电压
    • FT 代表能容忍 5V 的电压
    • 无 FT 则只能容忍 3.3V 的电压,若想解 5V 电平则需加装电平转换电路
  • 主功能
    • 上电后默认的功能,一般和引脚名称相同
    • 如果和引脚名称不相同,则引脚的实际功能以主功能为准
  • 默认复用功能
    • I/O 口上同时连接的外设功能引脚
    • 配置 I/O 口时可选择是通用 I/O 口还是复用功能
  • 重定义功能
    • 作用:如果有两个功能同时复用在一个 I/O 口上,则可把其中一个复用功能重映射到其他端口上
1.8.2 引脚解析
  • 1、VBRT
    • 备用电池供电的引脚,可以接一个 3V 的电池,当系统电源断电时,备用电池可以给内部的 RTC 时钟和备份寄存器供电
  • 2、I/O 口或侵入检测或 RTC
    • I/O 口可以根据程序输出或读取高低电平
    • 侵入检测用于安全保障,比如:可以在产品外壳加装防拆触点,然后接上电路到该引脚上,若有人强行拆开设备导致触点断开,则这个引脚的电平变化就会触发 STM32 的侵入信号,从而清空数据保证安全
    • RTC 的引脚可以用来输出 RTC 校准时钟、RTC 闹钟脉冲或者秒脉冲
  • 3、4 号引脚
    • I/O 口或者接 32.768KHz 的 RTC 晶振
  • 5、6 号引脚
    • 接系统的主晶振,一般是 8MHz,芯片内部有锁相环电路,可以对这个 8MHz 的频率进行倍频得到 72MHz 的主频,作为系统主时钟
  • 7、NRST
    • 系统复位引脚,N 代表它是低电平复位
  • 8、9号引脚
    • 内部模拟部分的电源,比如 ADC、RC 震荡器等
    • VSS 是负极,接 GND,VDD 是正极,接 3.3V
  • 10-19 号引脚,21-22 号引脚
    • 都是 I/O 口,PA0 可以用于唤醒处于待机模式的 STM32
  • 20、PB2
    • I/O 口或者 BOOT1 引脚
    • BOOT 引脚是用来配置启动模式的
  • 23、24号的 VSS_1 和 VDD_1 是系统的主电源口
    • 另外,下面的 VSS_2、VDD_2、VSS_3、VDD_3 都是系统的主电源口
    • VSS 是负极,接 GND,VDD 是正极,接 3.3V
    • STM32 内部采用了分区供电的方式
  • 25-33 号引脚都是 I/O 口
  • 34-40 号引脚
    • I/O 口或者调试端口,用于调试程序与下载程序(尽量不要把这几个都变成 I/O 口,因为这样就没有用于调试的端口了,只能通过设置启动配置 0 + 1 用于串口下载)
    • 该 STM32 支持 SWD 和 JTAG 两种调试方式
      • SWD 需要 2 根线,分别是 SWDIO 和 SWCLK
      • JTAG 需要 5 根线,分别是 JTMS、JTCK、JTDI、JTDO、NJTRST

      本文使用 STLINK 来下载调试程序,STLINK 用的是 SWD 的方式,只需占用 PA13 和 PA14 两个 I/O 口

  • 41-43 和 45-46 号引脚都是 I/O 口
  • 44号 BOOT0,和前面的 BOOT1 一样,也是用来做启动配置的

1.9 启动配置

  • 启动配置的作用就是指定程序开始运行的位置
    • 一般情况下,程序都是在 Flash 程序存储器开始执行,但是在某些情况下,也可以让程序在别的地方开始执行,用以完成特殊功能
  • 下图中 X 代表任何接口,0 表示接地,1 表示接 3.3V 电源正极
    • X + 0 最常用的模式
    • 0 + 1 用于串口下载使用
      • 系统存储器中储存的就是 STM32 中的一段 BootLoader 程序
      • BootLoader 程序的作用就是接收串口数据,然后刷新到主闪存中
    • 1 + 1 用来进行程序调试
      在这里插入图片描述

1.10 最小系统电路

在这里插入图片描述

2. 软件安装

  • 资料下载
  • 软件安装

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go对rabbitmq基本操作

一、安装rabbitmq 1、直接使用docker拉取镜像 docker pull rabbitmq:3.82、启动容器 docker run \-e RABBITMQ_DEFAULT_USERadmin \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name rabbit01 \--hostname rabbit01 --restartalways \-p 15672:15672 \-p 5672:…

《C++PrimePlus》第9章 内存模型和名称空间

9.1 单独编译 Visual Studio中新建头文件和源代码 通过解决方案资源管理器,如图所示: 分成三部分的程序(直角坐标转换为极坐标) 头文件coordin.h #ifndef __COORDIN_H__ // 如果没有被定义过 #define __COORDIN_H__struct pola…

【开源】基于Vue.js的城市桥梁道路管理系统的设计和实现

项目编号: S 025 ,文末获取源码。 \color{red}{项目编号:S025,文末获取源码。} 项目编号:S025,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥…

学生信息管理系统程序Python

系统主界面 在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,有两种方法, 一种是输入1,另一种是按下键盘上的↑或↓方向键进行选择。这两种方法的结果是一样的,所以使用哪种方法都可以。 (…

时间序列预测 — Informer实现多变量负荷预测(PyTorch)

目录 1 实验数据集 2 如何运行自己的数据集 3 报错分析 1 实验数据集 实验数据集采用数据集4:2016年电工数学建模竞赛负荷预测数据集(下载链接),数据集包含日期、最高温度℃ 、最低温度℃、平均温度℃ 、相对湿度(平均) 、降雨…

什么是零拷贝 、零拷贝优化方案 - 真正的零拷贝,哪些地方会用到零拷贝技术

文章目录 什么是零拷贝3、零拷贝优化方案 - 真正的零拷贝哪些地方会用到零拷贝技术 现在来谈谈零拷贝,以及在开发中哪些地方使用到零拷贝。 开干… 什么是零拷贝 零拷贝指的是,从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底…

徕芬不是满分:自称超越戴森,用户称多次故障,品控仍是老大难?

撰稿|行星 来源|贝多财经 “双十一”购物节落下帷幕后,各大品牌纷纷公布“战报”。其中,高速吹风机品牌徕芬(也称“徕芬科技”)销售额超4.4亿元,全系产品销量超过80万台,高速吹风机系列单品(LF03、SE)销售…

来自Microsoft Teams的摄像头背景图片

原文件在👆,下面是预览图 如果你安装了Microsoft Teams也可以搜索MSTeams,就在MSTeams/Backgrounds

【anaconda】numpy.dot 向量点乘小技巧

假设向量A[1,1], 向量B[2,3]。如果想知道他们的内积就可以输入如下代码: 当然,如果是两个列向量相乘,肯定是不对的 但是如果没有维度也一样可以求得内积,而且结果不会套在列表里

AI和人工智能与机器学习全景报告

今天分享的是AI系列深度研究报告:《AI和人工智能与机器学习全景报告》。 (报告出品方:appen) 报告共计:30页 获取 数据获取仍是AI应用构建团队的主要瓶颈。 原因各不相同。例如,特定用例的数据可能不足…

Day02嵌入式---按键控灯

一、简单介绍 按键控制灯开关是一种常见的嵌入式系统示例项目,它通常用于演示嵌入式系统的基本控制能力。该项目由一个或多个LED和一个按键组成。通过按下按键,可以控制LED的开关状态,从而实现灯的亮灭控制。 二、查看功能手册 2.1 查看硬件…

基于单片机压力传感器MPX4115检测-报警系统proteus仿真+源程序

一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPX4115采集压力值、DS18B20采集温度值送到液晶1602显示。 3、按键设置报警值。 4、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /*********************************…

鸿蒙开发之android开发人员指南《基础知识》

基于华为鸿蒙未来可能不再兼容android应用,推出鸿蒙开发系列文档,帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发? ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风…

【免费使用】基于PaddleSeg开源项目开发的人像抠图Web API接口

基于PaddleSeg开源项目开发的人像抠图API接口,服务器不存储照片大家可放心使用。 1、请求接口 请求地址:http://apiseg.hysys.cn/predict_img 请求方式:POST 请求参数:{"image":"/9j/4AAQ..."} 参数是jso…

与Windows 10更新大同小异!一步一步教你如何更新Windows 11

如果你想让你的Windows 11设备获得最佳性能,那么定期更新是至关重要的。即使是最好的电脑如果不更新也会受到影响,因为更新会应用软件调整,帮助你的设备更快、更平稳地运行。它还提高了安全性,意味着你可以从Microsoft的最新功能中…

Kafka-TopicPartition

Kafka主题与分区 主题与分区 topic & partition,是Kafka两个核心的概念,也是Kafka的基本组织单元。 主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息的二次归类。 分区的划分为kafka提供了可伸缩性、水…

【H5 Canvas】【平面几何】特殊图形绘制(箭头/正多边/正多尖角形等)

文章目录 直线/弧线 箭头 直线/弧线 箭头 // startX,startY 起始坐标 // endX,endY 结束坐标 // angel 圆弧角度,取值[0,PI]; 0表示画直线箭头,否则画圆弧箭头 CanvasRenderingContext2D.prototype.drawArrow function(startX,startY,endX,endY,angel)…

openEuler Linux 部署 FineBi

openEuler Linux 部署 FineBi 部署环境 环境版本openEuler Linux22.03MySQL8.0.35JDK1.8FineBi6.0 环境准备 升级系统内核和软件 yum -y updatereboot安装常用工具软件 yum -y install vim tar net-tools 安装MySQL8 将 MySQL Yum 存储库添加到系统的存储库列表中 sudo…

JVM——垃圾回收算法(垃圾回收算法评价标准,四种垃圾回收算法)

目录 1.垃圾回收算法发展简介2.垃圾回收算法的评价标准1.吞吐量2.最大暂停时间3.堆使用效率 3.垃圾回收算法01-标记清除算法垃圾回收算法-标记清除算法的优缺点 4.垃圾回收算法02-复制算法垃圾回收算法-复制算法的优缺点 5.垃圾回收算法03-标记整理算法标记整理算法的优缺点 6.…

适用于 Mac 和 Windows 的顶级U 盘数据恢复软件

由于意外删除或设备故障而丢失 USB 驱动器中的数据始终是一件令人压力很大的事情,检索该信息的最佳选择是使用优质数据恢复软件。为了让事情变得更容易,我们已经为您完成了所有研究并测试了工具,并且我们列出了最好的 USB 记忆棒恢复软件&…