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时钟。

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

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

相关文章

C# 信号量(Semaphore)详细使用案例

文章目录 简介信号量的工作原理使用场景使用示例其他使用实例1. 数据库连接池管理2. 文件读写同步3. 生产者消费者问题4. 打印任务队列同步5. Web服务器并发请求限制 简介 在C#中,信号量(Semaphore)是.NET框架提供的一个同步类,位…

如何在Shopee平台上进行测款选品

在如今竞争激烈的电商市场,选择合适的产品成为卖家们提高销售业绩的重要一环。在Shopee平台上进行测款选品,可以帮助卖家找到符合市场需求的产品,提高销售业绩。本文将介绍一些策略和步骤,帮助卖家在Shopee平台上进行测款选品。 …

【Docker】入门到精通(常用命令解读)

一、准备工作 1.配置Docker的yum库 首先要安装一个yum工具 yum install -y yum-utils安装成功后,执行命令,配置Docker的yum源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo2.安装Docker 执…

ReactNative实现弧形拖动条

我们直接看效果 先看下面的使用代码 <CircularSlider5step{2}min{0}max{100}radius{100}value{30}onComplete{(changeValue: number) > this.handleEmailSbp(changeValue)}onChange{(changeValue: number) > this.handleEmailDpd(changeValue)}contentContainerStyle{…

FreeCAD的python脚本编写

简介 FreeCAD是一款强大的开源CAD软件&#xff0c;可以与python无缝对解&#xff0c;使用python来驱动三维几何的构建&#xff0c;具有很高的灵活性。本文主要讨论一下录制宏的方法&#xff0c;以及如何驱动特定参数 方法 打开FreeCAD软件&#xff0c;点击录制宏按钮后&…

建筑行业数字化:从设计到运维的全面革新

随着科技的快速发展&#xff0c;数字化技术在各行各业中的应用越来越广泛。建筑行业作为传统产业&#xff0c;也在积极拥抱数字化技术&#xff0c;以提高效率、降低成本并实现可持续发展。本文将主要探讨建筑行业数字化的几个关键领域&#xff0c;包括建筑设计数字化、施工管理…

配置visualsvn提交后自动邮件通知

参考&#xff1a; https://blog.csdn.net/wiker_yong/article/details/10334967 # -*- coding: utf-8 -*- import sys import os import smtplib from email.mime.text import MIMEText from email.header import Headermail_host smtp.163.com #发送邮件的smtp地址 mail_us…

JS第二天、原型、原型链、正则

☆☆☆☆ 什么是原型&#xff1f; 构造函数的prototype 就是原型 专门保存所有子对象共有属性和方法的对象一个对象的原型就是它的构造函数的prototype属性的值。prototype是哪来的&#xff1f;所有的函数都有一个prototype属性当函数被创建的时候&#xff0c;prototype属性…

Lightroom Classic 2024 --- LR2024

Lightroom Classic 2024是一款专业的图片编辑和照片管理软件&#xff0c;旨在帮助摄影师高效地处理、编辑和展示他们的作品。通过强大的组织工具&#xff0c;用户可以轻松地管理、搜索和筛选大量的照片。该软件提供了全面的编辑工具&#xff0c;包括调整颜色、曝光、对比度、白…

Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理

文章目录 消息的传输什么是OSI七层模型OSI七层模型的内容物理层&#xff08;Physical Layer&#xff09;&#xff1a;数据链路层&#xff08;Data Link Layer&#xff09;&#xff1a;网络层&#xff08;Network Layer&#xff09;&#xff1a;传输层&#xff08;Transport Lay…

On the Spectral Bias of Neural Networks论文阅读

1. 摘要 众所周知&#xff0c;过度参数化的深度神经网络(DNNs)是一种表达能力极强的函数&#xff0c;它甚至可以以100%的训练精度记忆随机数据。这就提出了一个问题&#xff0c;为什么他们不能轻易地对真实数据进行拟合呢。为了回答这个问题&#xff0c;研究人员使用傅里叶分析…

Oracle12c之Sqlplus命令行窗口基本使用

Oracle12c之Sqlplus命令行窗口基本使用 文章目录 Oracle12c之Sqlplus命令行窗口基本使用1. 连接1. 超级用户2. 普通用户1. 创建普通用2. 连接 2. 修改用户连接数1. 查看默认连接最多用户数1. PL/SQL developer中查看2. Sqlplus中查看 2. 查看目前已经连接的用户数3. 修改用户连…

设计模式-行为型模式(上)

行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间分派行为&…

Docker 搭建mysql 集群(二)

PXC方案 很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点&#xff0c;数据双向同步的&#xff08;在任何节点上都可以同时读写&#xff09; 创建MySQL PXC集群 1 安装PXC镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2 为PXC镜像改名 docker tag pe…

如何选择旅游路线,使得假期旅游路费最少?

旅行是许多人的热爱&#xff0c;但是在规划一个完美的假期时&#xff0c;找到最经济的路线常常是一个挑战。这里就需要引入一个著名的优化问题——旅行商问题。本文将介绍TSP的基础知识&#xff0c;并使用MTZ消除子环方法优化一个简单的TSP问题的示例。 旅行商问题简介 TSP&a…

用友U8 Cloud ReportDetailDataQuery SQL注入漏洞复现(QVD-2023-47860)

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 cloud ReportDetailDataQuery 接口处存在SQL注入漏洞,攻击者未经授权可以访…

自然语言nlp学习五

6-10 文本生成--介绍_哔哩哔哩_bilibili 在自然语言处理&#xff08;NLP, Natural Language Processing&#xff09;领域&#xff0c;“sequence”通常是指一个有序的数据集合&#xff0c;它由一系列元素按照特定顺序排列而成。这些元素可以是单词、字符、句子或其他文本单位。…

NLP_语言模型的雏形N-Gram

文章目录 N-Gram 模型1.将给定的文本分割成连续的N个词的组合(N-Gram)2.统计每个N-Gram在文本中出现的次数&#xff0c;也就是词频3.为了得到一个词在给定上下文中出现的概率&#xff0c;我们可以利用条件概率公式计算。具体来讲&#xff0c;就是计算给定前N-1个词时&#xff0…

【ROS机器人系统】实验1 熟悉ROS操作系统、熟悉ROS通信架构

文章目录 实验1 熟悉ROS操作系统、熟悉ROS通信架构1、实验目的2、实验设备3、实验内容3.1 安装ROS3.2 ROS常用指令以及小海龟示例roscore命令rosrun命令rosnode 命令roscd 命令rostopic 命令 动手实现1&#xff1a;rosservice 命令roslaunch 命令 动手实现2&#xff1a;动手实现…

免费代理IP的弊端有哪些?使用代理IP前要这样哪些事项?

随着互联网的普及&#xff0c;越来越多的人开始需要使用代理IP来保护自己的隐私或突破网络限制。然而&#xff0c;免费代理IP并非完美的解决方案&#xff0c;它们也存在一些弊端。在本文中&#xff0c;我们将探讨免费代理IP的弊端以及使用代理IP前需要注意的事项。 免费代理IP的…