STM32学习笔记(一)基础知识

文章目录

  • 一、什么是单片机?
  • 二、STM系列单片机命名规则
  • 三、STM32F103C8T6单片机简介
  • 四、标准库与HAL库区别
  • 五、通用输入输出端口GPIO
  • 六、复位和时钟控制(RCC)
  • 七、时钟
  • 八、中断和事件
  • 九、定时器

一、什么是单片机?

  • 单片机和PC电脑相比的话,相当于电脑的主板

  • 单片机是一种集成电路芯片。单片机又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

  • 烧录工具有很多种,比如:串口、J-Link、ST-Link、U-Link 等等

这里介绍STM32F103C8T6与TS-LINK串口的连接方式

  • STM32----------TS-LINK串口
    PA14(SWDIO)-------->SWDIO
    PA13(SWCLK)------->SWCLK
    GND------->GND

在这里插入图片描述

二、STM系列单片机命名规则

  • 1、ST—代表着意法半导体公司,即由什么公司生产

意法半导体公司是一家SOC厂商,所谓SOC(System-on-a-Chip),根据它的中文意思可以知道“把系统都做在一个芯片上”, 如果在PC时代我们说一个电脑的核心是CPU,那么在智能终端时代,手机的核心就是这个SoC。

  • 常见的SOC厂商有NXP(恩惠普)、飞思卡尔、苹果、三星等厂商

  • 2、M— Microelectronics的缩写,表示微控制器
    微控制器和微处理器的区别:

  • 微控制器:CPU + 片内内存 + 片内外设

  • 微处理器:CPU

  • 处理器通常指微处理器、微控制器和数字信号处理器这三种类型的芯片

  • 微处理器(MPU)通常代表一个功能强大的CPU,但不是为任何已有的特定计算目的而设计的芯片。这种芯片往往是个人计算机和高端工作站的核心CPU。

  • 中央处理器,又称为处理器,英文缩写为CPU,即Central Processing Unit,是电子计算机的主要设备之一,其功能主要是解译计算机指令以及处理计算机软件中的数据。CPU为电子计算机设计提供了基本的数字计算特性。CPU、存储设备和输入/输出设备是现代微型电脑的三大核心部件。由集成电路制造的CPU通常称为微型处理器。从20世纪70年代中期开始,单芯片微型处理器几乎取代了所有其他类型的CPU,如今CPU这个术语几乎成为了所有微型处理器的代称

  • **微控制器(MCU)**是将一个计算机集成到一个芯片中,实现嵌入式应用,故称单片机(single chip microcomputer)。随后,为了更好地满足控制领域的嵌入式应用,单片机中不断扩展一些满足控制要求的电路单元。目前,单片机已广泛称作微控制器

  • **数字信号处理器(DSP)**里的CPU是专门设计用来极快地进行离散时间信号处理计算的,比如那些需要进行音频和视频通信的场合。DSP内含乘加器,能比其它处理器更快地进行这类运算

3、32— 32bit的意思,表示这是一个32bit的微控制器

常见的8位的微控制器:51单片机、52单片机等。
常见的16位的微控制器:AVR、PIC等

在这里插入图片描述

三、STM32F103C8T6单片机简介

在这里插入图片描述

四、标准库与HAL库区别

1. 寄存器
寄存器众多,需要经常翻阅芯片手册,费时费力;
更大灵活性,可以随心所欲达到自己的目的;
深入理解单片机的运行原理,知其然更知其所以然。

2. 标准库
将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用
每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的;
配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能;
大大降低单片机开发难度,但是在不同芯片间不方便移植。

3. HAL库
ST公司目前主力推的开发方式,新的芯片已经不再提供标准库;
为了实现在不同芯片之间移植代码;
为了兼容所有芯片,导致代码量庞大,执行效率低下

五、通用输入输出端口GPIO

1.什么是GPIO?

GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

简单来说我们可以控制GPIO引脚的电平变化,达到我们的各种目的。
2.命名规则

  • 组编号:GPIOA, GPIOB, GPIOC, GPIOD … GPIOG
  • 引脚编号:0,1,2,3,4…15
    组合起来:
    PA0, PA1, PA2 … PA15
    PB0, PB1, PB2 … PB15
    PC0, PC1, PC2 … PC15

    有一些特殊功能的引脚是不能用作IO的。
    内部框架图
    下图来源于官方参考手册,了解即可
    在这里插入图片描述
    3.推挽输出与开漏输出
  • 内部结构图:
    在这里插入图片描述
  • 推挽输出: 可以真正能真正的输出高电平和低电平
  • 开漏输出: 开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动

六、复位和时钟控制(RCC)

系统复位
当发生以下任一事件时,产生一个系统复位:

  1. NRST引脚上的低电平(外部复位)
  2. 窗口看门狗计数终止(WWDG复位)
  3. 独立看门狗计数终止(IWDG复位)
  4. 软件复位(SW复位)
  5. 低功耗管理复位

电源复位
当以下事件中之一发生时,产生电源复位:

  • 上电/掉电复位(POR/PDR复位)
  • 从待机模式中返回

备份区复位
备份区域拥有两个专门的复位,它们只影响备份区域。
当以下事件中之一发生时,产生备份区域复位。

  1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)中的BDRST位产生。
  2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位

七、时钟

1.什么是时钟?
时钟就像一个开关,时钟打开,对应的设备才会工作

2.时钟来源:

三种不同的时钟源可被用来驱动系统时钟(SYSCLK)
HSI振荡器时钟(高速内部时钟)
HSE振荡器时钟(高速外部时钟)
PLL时钟(锁相环倍频时钟)

3.二级时钟源:

  • 40kHz低速内部RC(LSIRC)振荡器
    32.768kHz低速外部晶体(LSE晶体)
    如何使用CubeMX配置时钟

八、中断和事件

1.什么是中断?
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行
在这里插入图片描述

2.什么是优先级?
当有多个中断同时发生时,应该优先处理哪个中断呢?我们可以给每个中断定义一个优先级,告诉系统优先处理优先级较高的中断,延后处理优先级较低的中断
3.抢占优先级和响应优先级的区别:

  • 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
  • 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
  • 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
  • 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行

4.什么是优先级分组?
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把
指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级

5.什么是EXTI?

  • 外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。 EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
    在这里插入图片描述
  • EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。
  • 产生中断线路目的是把输入信号输入到 NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的。而产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的

6.什么是NVIC?

  • STM32通过中断控制器NVIC(Nested Vectored Interrupt Controller)进行中断的管理 。NVIC是属于Cortex内核的器件,不可屏蔽中断(NMI)和外部中断都由它来处理,但是SYSTICK不是由NVIC控制的

7.什么是中断向量表?

  • 每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表

九、定时器

1.定时器工作原理:
使用精准的时基,通过硬件的方式,实现定时功能。定时器核心就是计数器
在这里插入图片描述
2.定时器分类
基本定时器(TIM6~TIM7)
通用定时器(TIM2~TIM5)
高级定时器(TIM1和TIM8)

在这里插入图片描述
在这里插入图片描述
3.通用定时器介绍:

(1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)
(2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值
(3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
A.输入捕获
B.输出比较
C.PWM 生成(边缘或中间对齐模式)
D.单脉冲模式输出
(4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
(5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
C.输入捕获
D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路
F.触发输入作为外部时钟或者按周期的电流管理

4.定时器计数模式:
在这里插入图片描述

5.定时器时钟源:
在这里插入图片描述
定时器溢出时间计算公式:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot的多环境配置详解(上)——文件配置项版

SpringBoot不同环境加载不同配置文件 - resource & profile 文章目录SpringBoot不同环境加载不同配置文件 - resource & profile1、 profile多配置文件2、 profile单配置文件3、maven的profiles策略4、spring.profiles.activeprofiles.active用法1、 profile多配置文件…

健身房训练计划—背部

杠铃屈腿硬拉(臀,大腿) 动作要领: 1,站距和肩等宽,脚尖微微外八,拉的时候把杆贴近小腿,身体成45度(头背腰成45度)。 2,发力的时候腿用力向上蹬&am…

IOC 相关内容

IOC 相关内容4,IOC相关内容4.1 bean基础配置4.1.1 bean基础配置(id与class)4.1.2 bean的name属性步骤1:配置别名步骤2:根据名称容器中获取bean对象步骤3:运行程序4.1.3 bean作用范围scope配置4.1.3.1 验证IOC容器中对象是否为单例验证思路具体实现4.1.3.…

三个月从功能测试进阶到自动化测试,涨薪5k?你在想啥呢?

一、自动化测试要学多久能学会? 兄弟,老实说如果你现在上班,之前主要在做功能测试,或者编程基础比较弱的话,三个月够呛。 如果你是脱产学习,每天能保持6~8小时学习时间的话,可以。…

【综】A review of bicycle-sharing service planning problems

A review of bicycle-sharing service planning problems 共享单车服务规划问题综述 article{ZHOU2022608, title {Review of bike-sharing system studies using bibliometrics method}, journal {Journal of Traffic and Transportation Engineering (English Edition)}, v…

12.0 自定义SystemUI下拉状态栏和通知栏视图(十九)之悬浮通知布局

1.前言 在进行12.0的系统rom产品定制化开发中,在12.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以根据产品需要来自定义SystemUI的下拉状态栏和通知栏功能,首选实现的就是下拉通知栏左滑删…

是面试官放水,还是企业实在是缺人?这都没挂,字节原来这么容易进...

“字节是大企业,是不是很难进去啊?”“在字节做软件测试,能得到很好的发展吗?一进去就有9.5K,其实也没有想的那么难”直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾讯…

基于springboot学生信息管理系统

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

JAVA ---数据类型

(一)Java的标识符与关键字 现实世界,所有东西都有属于自己的名字,从而方便分类和区别其他事物。在程序中,常常用一个记号对变量、数组、方法和类等进行标识,这个记号就叫标识符(名字&#xff09…

华为OD机试用java实现 -【最优调度策略】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:最优调度策略 题目 在通信系…

JavaScript核心高级内容复习3

文章目录对象的创建模式继承模式详细介绍Object构造函数模式对象字面量工厂模式自定义构造函数模式构造函数原型的组合模式继承模式--原型链继承继承模式--借用构造函数继承继承模式--组合继承对象的创建模式 Object构造函数模式var obj {}; obj.name Tom obj.setName func…

【软件设计师04】计算机网络

计算机网络 1. OSI/RM七层模型 层次名称主要功能主要设备及协议7应用层实现具体的应用功能POP3、FTP、HTTP、Telnet、SMTP、DHCP、TFTP、SNMP、DNS6表示层数据的格式与表达、加密、压缩5会话层建立、管理和终止会话4传输层端到端的连接TCP、UDP3网络层分组传输和路由选择三层…

Matplotlib库入门

Matplotlib库的介绍 什么是Matplotlib库? Matplotlib是一个Python的数据可视化库,用于绘制各种类型的图表,包括线图、散点图、条形图、等高线图、3D图等等。它是一个非常强大和灵活的库,被广泛用于数据科学、机器学习、工程学、…

ARMv8 secure 和 Non-secure模式切换的两种方法:SMC和SCR.NS

文章目录SMC 指令SCR.NSAArch64SMC(Secure Monitor Call)指令HCR_EL2.TSC :Traps to EL2 of EL1 execution of SMC instructionsSCR_EL3.SMD : Disabling EL3, EL2, and EL1 execution of SMC instructionsSCR_EL3 寄存器AArch32S…

一次完整的OCR实践记录

一、任务介绍 这次的任务是对两百余张图片里面特定的编号进行识别,涉及保密的原因,这里就不能粘贴出具体的图片了,下面粘贴出一张类似需要识别的图片。 假如说我的数据源如上图所示,那么我需要做的工作就是将上面图片里面标红的数…

Spring----整合Mybatis

项目结构具体如下: 准备一个数据库: 架构是spring_db,表名为user_tb 结构如下: 第一步:配置pom文件(导入相应的坐标,注意spring-mybatis与mybatis的版本需要相对应,可以去官网查找…

Python(黄金时代)——多线程、多进程、协程

基本使用 基本概念 进程 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程 进程是处于运行过程中的程序,并且具有一定的独立功能 进程是系统进行资源分配调度的一个独立单位 线程 线程&…

基于springboot物资管理系统(程序+数据库)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

迅镭激光带您沉浸式直击展会现场!线上直播、云端互动,精彩持续!

2023 ITES深圳工业展 迅镭展位10-B06 深圳国际会展中心-宝安新馆 今天(3月29日),2023 ITES深圳工业展在深圳国际会展中心(宝安新馆)盛大开幕!迅镭激光以“行业高端典范、引领智造未来”为主题,携多款旗舰产品展示领先技术,展会首日便收获了超…

为了开放互联,明道云做了十件事

本文来自明道云资深研发经理孙伟,在明道云2022年秋季伙伴大会活动演讲,经校对编辑后整理为演讲精华。 一、开放没有选择 很多客户选择我们的一个重要原因,是明道云所能提供的产品开放能力。开放其实是没有选择的,坦白来讲&#…