IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32&HAL笔记00:STM32及HAL库介绍 -> 正文阅读

[嵌入式]STM32&HAL笔记00:STM32及HAL库介绍

STM32&HAL笔记00:STM32及HAL库介绍

一直想着有机会从头开始学习下STM32这款单片机,前端时间对CubeMX和HAL库的操作很好奇,因为之前做项目都是直接用正点原子的例程,所以这次我打算利用学习CubeMX和HAL库的这个机会,从新系统的学习下STM32,重点学习其相关外设的原理,并使用HAL库来实战。目前我将安排两类文章,一类属于笔记部分,主要介绍相关理论知识,另外一类属于实战部分,介绍操作方法,根据该操作方法可以将内容复现。那我们就先大致了解下STM32以及HAL库吧~

STM32

STM32功能概述

整个学习准备采用最基础的STM32F103系列的单片机,先来大致看一下这款单片机的功能。

  • 芯片属于ARM架构32位的处理芯片,时钟频率为72MHz
  • 存储器为32K字节至128K字节闪存程序存储器
  • I/O引脚电压3.3V,内嵌4至16Mhz高速晶体振荡器
  • 芯片有三种省电模式,分别为睡眠、停机和待机模式,VBAT引脚为RTC和后备寄存器供电
  • 拥有2个12位的数模转换器,转换电压0-3.6V
  • 可以采用SWD和JTAG接口进行调试,但是一般优先选择SWD
  • 7通道的DMA控制器,支持的外设有定时器、ADC、SPI、I2C、和USART
  • 多达32个快速I/O口,所有的I/O口均可以映射到16个外部中断
  • 有7个定时器,3个同步的16位定时器,每个定时器有4个输入捕获/输出比较/PWM或脉冲计数通道
  • 通信接口包含2个I2C、3个USART、2个SPI同步串行接口、CAN接口、USB2.0全速接口
    单片机包含5种封装类型,在整个学习过程中,我们采用的是LQFP48这种封装类型,如下图所示,列出了这几种封装类型
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2k8lu9k-1629420690419)(https://i.loli.net/2021/03/24/VPQNI7rjndJipax.png)]

嵌套的向量式中断控制器(NVIC)

芯片内置嵌套的向量式中断控制器,能够处理43个可屏蔽中断通道和6个优先级

外部中断/事件控制器(EXIT)

外部中断/事件控制器包含19个边沿检测器,连接16个外部中中断线,用于产生中断/事件请求。每个中断线都可以单独配置,并且可以单独屏蔽,有一个挂起寄存器维持所有中断请求的状态。

时钟和启动

首先系统时钟的选择是在启动时完成的,8MHz的RC振荡器被选择为默认时钟,然后可以选择外部的时钟,如果外部的时钟无效,则会产生相应的中断,最后使用多个预分频器配置时钟

供电监视器

芯片内部有一个上电复位/掉电复位的电路,该电路一直处于工作状态,作用在于当供电电压低于2V时,不必使用外部的复位电路就可以复位。器件中还有一个可编程的电压检测器,作用是检测VDD的电压,当电压低于VPVD时,产生一个中断,这个中断可以使芯片进入安全模式,注意需要通过程序开启此功能

低功耗模式

器件包含三种低功耗模式,分别是睡眠模式、停机模式、待机模式

  • 睡眠模式:只有CPU停止工作,其他外设均处于工作状态,中断可以唤醒CPU
  • 停机模式:所有1.8V内部功能停止工作,PLL HSI HSE RC振荡器将会关闭,但是SRAM和寄存器的内容不会丢失。EXIT的信号会唤醒该模式
  • 待机模式:在停机模式的基础上,SRAM和寄存器的内容会发生丢失,但是后备寄存器的内容还有,并且待机电路还在工作状态。可以采用NSRST、IWDG或者RTC闹钟唤醒。

DMA

首先DMA可以实现存储器到存储器、设备到存储器、存储器到设置之间的数据传输,一共有7个通道。然后每个通道有专门的硬件DMA请求逻辑,同时可以用软件对长度、传输源和目标地址进行单独设置,最后DMA可以用于SPI I2C USART 定时器和ADC等外设中。

RTC和后备寄存器

RTC和后备寄存器供电既可以选择VDD供电也可以选择VABT引脚供电,由一个开关控制。后备寄存器是10个16位的寄存器,可以用来在VDD没电时保存数据。实时时钟具有一组连续运行的计数器,可以为系统提供日历、闹钟功能,在时钟选择方面,可以选择使用外部晶体的32.768kHz振荡器,也可以使用内部RC振荡器,或者还可以使用高速外部时钟。一般考虑到精度问题等,优先选择用外部晶体的32.768kHz振荡器。

独立看门狗

首先看门狗的时钟是独立的32kHz内部RC振荡器,该振荡器独立于主时钟,因此可以工作在低功耗模式中。在系统发生问题时,可以复位整个系统,或者作为一个自由定时器为应用程序提供超时管理。最后可以通过选择字节配置成软件看门狗或者硬件看门狗。

定时器

定时器分为高级定时器TIM1和通用定时器TIM2-4,其中高级定时器就是一个分配到6通道的三相PWM发生器,也可以当作普通定时器使用。每个通用定时器都包含一个16位的自动加载递增/递减计数器、一个16位的预分频器、和4个独立通道,4个独立通道都可以用于输入捕获、输出比较、PWM和单脉冲输出。还可以通过定时器连接功能与高级定时器协同工作。

I2C总线

器件有2个I2C总线接口,能够工作与多主和从模式,支持标准和快速模式

通用同步/异步接收发送器(USART)

器件包含3个串口,其中一个串口通信速率可以达到4.5兆/秒。接口具有硬件的CTS和RTS信号管理

SPI串行外设接口

包含2个SPI通讯接口,在从或者主模式下,全双工和半双工的通信速率可以达到18兆位/秒。3位的预分频器可产生8种主模式频率。

控制器区域网络(CAN)

CAN接口不仅可以接收和发送11位标识符的标准帧,也可以处理29位标识符的扩展帧,含有2个接收FIFOs,3级14个可调节的滤波器。

通用串行总线(USB)

器件内嵌一个usb设备,遵循全速标准,具有可软件配置的端点和待机/恢复功能。专门的48MHZ时钟由PLL直接产生

通用输入输出接口(GPIO)

每个IO口都可以配置成输出(推拉、开路)、输入(带或者不带上拉或者上拉)或者其他外设的功能,与数字模拟的外设功能关键共用,并且所有引脚都是大电流通过的能力。

ADC(模拟/数字转换器)

器件内嵌2个12位的数字/模拟转换器,每个ADC有16个外部通道,可以执行单次扫描或者扫描转换模式。
对上述功能做简单介绍后,可以根据下面的方框原理图大致了解该器件内部的组成结构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5kVHnWgg-1629420690422)(https://i.loli.net/2021/03/25/bTYGRpPW941SxCU.png)]

HAL库

C语言对程序的编程其实就是对寄存器的操作,但是随着32系类芯片的寄存器越来越多,这时很多人已经记不住每个寄存器的名称等,这时意法半导体非常友好地为编程人员提供了一套操作寄存器的API接口,这套东西就成为HAL库。有了HAL库,我们就不用去记每个寄存器的地址和操作方法,只需要根据HAL库函数操作即可。
CubeMX是意法半导体为编程人员提供的一款开发软件,使用该软件可以进行图形化编程,其实在开发过程中,最耗费精力的就是IO口的配置,然后CubeMX这款软件目的在于简化IO口的操作,说白了就是配置IO,然后自动生成代码的工具,生成后的代码我们不需要关注IO口的配置,只需要进行程序的逻辑处理即可,使用起来非常的方便。

总结

这篇文章主要对32的功能进行了简单的介绍,比如包含几个定时器等等,以及对HAL库的介绍,后续将根据实战和理论相结合的方式一一探讨这些功能。鉴于笔者知识面有限,如上述内容存在问题,请联系笔者更正,谢谢!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:38:02  更:2021-08-21 15:39:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:11:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码