STM32L4学习

2024-02-05 09:36
文章标签 学习 stm32l4

本文主要是介绍STM32L4学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

STM32L4系列是围绕Cortex-M4构建,具有FPU和DSP指令集,主频高达80MHz。

STM32CubeL4简介

STM32Cube 是 ST 提供的一套性能强大的免费开发工具和嵌入式软件模块,能够让开发人员在 STM32 平台上快速、轻松地开发应用。它包含两个关键部分:

  1. 图形配置工具STM32CubeMX。允许用户通过图形化向导来生成C语言工程。
  2. 嵌入式软件包(STM32Cube库)。包含完整的HAL库(STM32硬件抽象层API),配套的中间件,以及一系列完整的例程。

库开发与寄存器开发的关系

很多用户都是从学 51 单片机开发转而想进一步学习 STM32 开发,他们习惯了 51 单片机的寄存器开发方式,突然一个 STM32 固件库摆在面前会一头雾水,不知道从何下手。

固件库就是函数的几何,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。

在51的开发中我们常常的做法是直接操作寄存器,比如要控制某些IO口的状态,我们直接操作寄存器:

P0=0x11;

而在STM32的开发中,我们同样可以操作寄存器:

GPIOC->BSRR=0x00000001;

这是针对STM32L4系列
这种方法当然可以,但是这种方法的劣势是要去掌握每个寄存器的用法,才能正确STM32,而对于STM32这种级别的MCU,数百个寄存器记下来又是谈何容易。
于是ST(意法半导体)推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一套接口(API)供开发者调用,大多数场合下,不需要去直到操作的是哪个寄存器,只需要知道调用哪些函数即可。

STM32CubeL4固件包介绍

在这里插入图片描述
Drivers文件夹
Drivers文件夹包含BSP,CMSIS和STM32L4xx_HAL_Driver三个子文件夹。

  • BSP:板级支持包,此支持包提供的是直接与硬件打交道的API,例如触摸屏,LCD,SRAM以及SSPROM等板载硬件资源等驱动。BSP文件夹下有多种ST官方Discovery开发板,Nucleo开发板以及EVAL板的硬件驱动API文件,每一种开发板对应一个文件夹。
  • CMSIS:顾名思义就是符合CMSIS标准的软件抽象层组件相关文件。文件夹内部文件比较多。主要包括DSP(DSP_LIB文件夹),Cortex-M内核及其设备文件(include文件夹),微控制器专用头文件/启动代码/专用系统文件等(Device 文件夹)。
  • STM32L4xx_HAL_Driver:这个文件夹非常重要,包含了所有的STM32L4xx系列HAL库头文件和源文件,也就是底层硬件抽象层API声明和定义。它的作用是屏蔽了复杂的硬件寄存器操作,统一了外设的接口函数。

STM32L4总线架构

STM32L4的总线架构比51单片机就要强大很多了。
在这里插入图片描述
主系统由32位多层AHB总线矩阵构成,总线矩阵可实现以下部分互连:

五条主控总线:

  • Cortex-M4内核I总线,D总线和S总线。
  • DMA1存储器总线
  • DMA2存储器总线
    八条被控总线:
  • 内部FLASH ICode总线
  • 内部FLASH DCode总线
  • 内部SRAM1
  • 内部SRAM2
  • AHB1外设
  • AHB2外设
  • FMC和QSPI

I总线(S0):此总线用于将Cortex-M4内核的指令总线连接到总线矩阵。内核通过此总线获取指令。此总线访问的对象是包括代码的存储器。
D总线(S1):此总线用于将Cortex-M4数据总线连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。
S总线(S2):此总线用于将Cortex-M4内核的系统总线连接到总线矩阵。此总线用于访问位于外设或SRAM中的数据。
DMA存储器总线(S3,S4):此总线用于将DMA存储器总线主接口连接到总线矩阵。DMA通过此总线来执行存储器数据的传入和传出,以及AHB外设或执行存储器之间的数据传输。

STM32L4时钟树概述

众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。
STM32L4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。
于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率。比如看门狗以及RTC只需要几十K的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU,一般都是采用多时钟源的方法来解决这些问题。
在这里插入图片描述
在STM32L4中,有6个重要的时钟源,为HSI、HSE、LSI、LSE、MSI、PLL。
其中PLL实际是分为三个时钟源,分别为主PLL、PLLISAI1和PLLSAI2。
从时钟频率来分可以分为高速时钟源和低速时钟源,在这6个中,HSI,HSE,MSI以及PLL是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其它的是内部时钟源。

  1. LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗、RTC和LCD使用。
  2. LSE是低速外部时钟,频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。
  3. HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~48MHz。我们的开发板接的是8MHz的晶振。HSE也可以直接做为系统时钟或者PLL输入。
  4. HSI是高速内部时钟,RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。
  5. MSI时钟信号由内部RC振荡器产生,其频率范围可通过时钟控制寄存器(RCC_CR)中的MSIRANGE[3:0]位进行调整。
  6. PLL为锁相环倍频输出。STM32L4有三个PLL:
  1. 主PLL(PLL)可由HSE、HIS或者MSI提供时钟信号,并具有三个不同的输出时钟。
    第一个输出 PLLR,用于生成高速的系统时钟(SYSTEM,最高 80MHz)
    第二个输出 PLLQ,可为 USB、RNG 和 SDMMC 提供时钟源
    第三个输出 PLLP,可用于 SAI1 和 SAI2 时钟
  2. PLLSAI1 用于生成精确时钟,同样具有三个不同的输出时钟。
    第一个输出 PLLSAI1P,可用于 SAI1 和 SAI2 时钟
    第二个输出 PLLSAI1Q,可为 USB、RNG 和 SDMMC 提供时钟源。
    第三个输出 PLLSAI1R,可为 ADC 提供时钟
  3. PLLSAI2 用于生成精确时钟,具有两个不同的输出时钟。
    第一个输出 PLLSAI2P,可用于 SAI1 和 SAI2 时钟
    第二个输出 PLLSAI2R,可为 ADC 提供时钟

在这里插入图片描述
从图中可以看出,主PLL的时钟源要经过一个分频系数为M的分频器,然后经过倍频系数为N的倍频器,出来之后还需要经过分频系数为R(输出PLLR时钟)、或者P(PLLP时钟)、或者Q(输出PLLQ时钟),最后才生成最终的主PLL时钟。

这篇关于STM32L4学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680495

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件