[嵌入式软件][入门篇][仿真平台][STM32CubeMX] GPIO和PLL的介绍

本文主要是介绍[嵌入式软件][入门篇][仿真平台][STM32CubeMX] GPIO和PLL的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、GPIO简介
    • (1) IO类型和功能
    • (2) 内部上下拉
  • 二、PLL简介
    • (1)什么是锁相环
    • (2)我们只需知道什么?
  • 三、STM32CubeMX配置
  • 四、HAL库的使用
  • 五、示例代码
  • 六、仿真效果(指示灯闪烁)

一、GPIO简介

GPIO是通用输入输出端口的简称,可以通过软件来控制输入和输出。

  1. STM32的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。
  2. GPIO 最简单的应用还属点亮 LED 灯了,只需通过软件控制 GPIO 输出高低电平即可。当然GPIO还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。

(1) IO类型和功能

  1. 通用输入/输出口用于芯片和外部进行数据传输,共有 4 组 GPIO:GPIOA、GPIOB、GPIOC 和GPIOD。
  2. 4 组 GPIO 的功能基本相同,可以通过配置将 GPIO 映射到对应芯片引脚,每个引脚可以被独立配置为数字输入或者输出口,也可以被配置为模拟输入(ADC)。
    3.外部中断、片上外设输入/输出等复用功能。同一时刻一个引脚仅可被映射一个复用功能,通过端口复用功能寄存器(GPIOx_AFR)配置。

(2) 内部上下拉

  1. 每个端口都可以配置成内部上拉(pull up)/下拉(pull down)的输入/输出,高阻输入(floating input),推挽输出(push-pull output),开漏输出(open drain output),增强驱动能力输出。
  2. 芯片复位后端口复位为高阻输入,目的是防止芯片在异常复位时,导致外部器件产生异常动作。
  3. 为了避免高阻输入而产生的漏电,用户要在芯片启动之后对端口进行相应配置(配置成内部拉高输入或者输出)。
  4. 端口被配成模拟端口后,数字功能被隔离,不能输出数字“1”和“0” ,CPU 读取端口的结果为“0” 。
  5. 所有端口都可以提供外部中断, 并且每个中断都可以配置成高电平触发、 低电平触发、 上升沿触发、下降沿触发或者任意边沿触发,支持边沿模式下的输入消抖。支持在工作模式/睡眠模式/深度睡眠模式下产生中断。

二、PLL简介

中文直译:锁相环倍频输出

锁相环 (Phase-Locked Loop) 在现代电子与通信系统中, 扮演着至关重要的角色. 凭借其独特的同步和频率调整能力, 锁相环已成为实现高性能, 高稳定性系统的基石

(1)什么是锁相环

  1. 锁相环是一种闭环反馈控制系统. 用于生成与输入信号同步且相位相同的输出信号.
  2. 它的核心功能是在输入信号的相位变化时, 自动调整输出信号以保持同步.
  3. 这使得锁相环成为了一种理想的频率和相位控制技术.

(2)我们只需知道什么?

  1. 系统时钟生成: STM32 通常使用锁相环从外部晶振或内部时钟源生成所需的时钟.
    例如: 通过使用 PLL, 可以将外部 8 MHz 晶振提升到 72 MHz 或更高, 以满足高性能应用的需求
  2. USB 时钟生成: 在具有 USB 功能的 STM32 微控制器中, 锁相环可以用于生成精确的 48 MHz 时钟, 以满足 USB 2.0 全速 (12 Mbps) 或高速 (480 Mbps) 通信的要求
  3. 音频时钟生成: 在音频处理器应用中, STM32 微控制器的锁相环可以用于生成特定的硬盘采样率 (如 44.1 kHz, 48 kHz 等) 以及 I2S 和 SPDIF 接口所需的位时钟和帧时钟
  4. ADC 和 DAC 时钟生成: 在高速数据采集和信号处理应用中, 所喜爱你该换可以用于为 ADC 和 DAC 提供精确的采样时钟, 从而实现高性能的数据转换
    在这里插入图片描述

三、STM32CubeMX配置

我们按照仿真平台的电路,在软件中配置引脚。
本文章使用的电路,见上一篇。

四、HAL库的使用

todo

五、示例代码

大家可以回顾启蒙课。

todo

六、仿真效果(指示灯闪烁)

仿真效果

这篇关于[嵌入式软件][入门篇][仿真平台][STM32CubeMX] GPIO和PLL的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS