STM32 | STM32时钟分析、GPIO分析、寄存器地址查找、LED灯开发(第二天)

STM32 第二天

一、 STM32时钟分析

寄存器:寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成

在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

控制寄存器:相当一排可通过0/1进行设置外设功能的开关,程序中通过地址查找到对应的寄存器,所以说控制寄存器的地址是唯一。

芯片时钟:芯片工作时,是需要脉冲,脉冲相当于给芯片起振,可保证芯片的正常工作,类似于人,心脏正常跳动,人体生命特征才能正常。

1HZ:一秒产生1个脉冲

频率换算单位:

1GHZ = 1000MHZ = 1000 000KHZ = 1000 000 000HZ

STM32时钟源

时钟源是可以产生

器件。

  • LSIRC 32KHZ         32 kHz 低速内部 RC (LSI RC)

  • LSEOSC                     32.168KHZ 32.768 kHz 低速外部晶振( LSE 晶振)

  • 16MHZ HSI RC           16MHZ  高速内部 RC (LSI RC)

  • 4-26MHZ HSE OSC     4-26MHZ高速外部晶振(HSE 晶振) 

    例如:XX开发板外部晶振为8MHZ

注意:外部晶振产生的脉冲

是精准,  RC振荡时钟产生的脉冲

是不精准

STM32主要总线时钟频率

  • SYSCLK 168MHZ

  • HCLK 168MHZ

  • AHB1/AHB2 168MHZ

  • APB1 42MHZ

  • APB2 84MHZ


二、 GPIO分析

1、GPIO

GPIO: GPIO(英语:General-purpose input/output),通用型之输入输出的简称。

GPIO分组

STM32F407ZET6(芯片型号)

  • 一共有7组IO口(PA  PB  PC  PD  PE  PF  PG)

  •  每组IO口有16个IO引脚

  •  一共16X7=112个IO引脚

  • 外加2个PH0和PH1

  • 一共114个IO口引脚(I:input  O:output)

原理图上GPIO连接与功能说明


每组(PA PB  PC  PD  PE  PF  PG)通用 I/O 端口包括:

•4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)。

•2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)。

•1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、

•1 个 32 位锁定寄存器(GPIOx_LCKR)

•2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。


GPIO工作方式(寄存器设置GPIO工作方式)

n4种输入模式

q浮空输入(没有上下拉电阻)

q上拉输入(有上拉电阻)

q下拉输入(有下拉电阻)

q模拟输入

n4种输出模式

q开漏输出(带上拉或者下拉)

q开漏复用功能(带上拉或者下拉)

q推挽式输出(带上拉或者下拉)

q推挽是复用功能(带上拉或者下拉)

n4种最大输出速度

q2MHZ

q25MHZ

q50MHZ

q100MHZ

注意点:

开漏输出只能输出0(低电平),若想出输出1(高电平),需要外部接上拉电阻(类似到51单片机P0组)。

推挽式输出可输出0(低电平)或者1(高电平),这是常用模式

2、寄存器地址查找

寄存器地址 = 寄存组基地址+偏移地址

寄存器查看

三、 LED灯开发


1、理解led灯原理图

LED0连接在PF9

PF9输出低电平(0),灯亮;PF9输出高电平(1),灯灭;

2、打开GPIOF组时钟

//将第5位置1 使能GPIOF组时钟

RCC_AHB1ENR |= (0x01<<5);

3、设置PF9灯为输出模式  输出推挽 上拉 速度(50MHZ)

4、通过GPIOF_BSRR控制LED灯亮与灭


1、请解释上、下拉电阻作用

上拉电阻和下拉电阻二者共同的作用是:避免电压的“悬浮”,造成电路的不稳定。

1、概念:将一个不确定的信号,(上拉电阻)通过一个电阻与电源VCC相连,固定在高电平;(下拉电阻)通过一个电阻与电源GND相连,固定在低电平  

2、上拉是对器件注入电流,灌电流;下拉是对引脚进行分流,拉电流;  

3、当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平。

下节公布源码,使用keil5和Proteus仿真。

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

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

相关文章

数码管的动态显示(一)

1.原理 把每一个数码管闪烁的时间设置为1ms&#xff0c;肉眼观察不到就会认为6个数码管在同时闪烁。 实验目标&#xff1a; 使用6位8段数码管实现数码管的动态显示&#xff0c;显示的内容就是0-999_999。当计数到最大值&#xff0c;让他归零&#xff0c;然后循环显示。每0.1秒…

Doris2.0 部署流程、遇到的问题及1.0升级至2.0流程整理

背景 Doris 1.0 版本总是出现副本损坏问题&#xff0c;机器资源充足&#xff0c;FE 和 BE 数据足够&#xff0c;每日的数据量一般&#xff0c;但是总是隔三差五出现入库时副本损坏问题。Doris 已经发布了2.0 版本&#xff0c;本周又发布了新版本 2.0.5。升级 Doris 能否解决副…

Jenkins 安装

目录 1、部署 Jenkins 安装配置 Jenkins 解锁 Jenkins 安装 Jenkins 插件 创建管理员账号 手动安装插件 2、Jenkins 从 GitLat 拉取代码 安装 Jenkins 插件 在 node-16 上生成密钥对 把公钥配置到 gitlab 上 把 root 用户私钥配置到 jenkins 上 Jenkins 创建一个任务…

命名空间(namespace)

定义 在C中&#xff0c;命名空间&#xff08;Namespace&#xff09;是一个特性&#xff0c;用于封装代码并避免名称冲突。命名空间可以看作是一个容器&#xff0c;其中可以包含类、函数、变量、常量、其他命名空间等。通过使用命名空间&#xff0c;我们可以更好地组织代码&…

C#进阶高级语法之LINQ :Lambda 表达式

C# 中的 LINQ (Language Integrated Query) 提供了一种声明性的数据查询和操作方法&#xff0c;它允许开发人员对集合、数据库等数据源进行查询和操作&#xff0c;而不需要编写复杂的循环和手动编码。Lambda 表达式与 LINQ 紧密相关&#xff0c;它提供了一种简洁的方式来定义匿…

职场中“祖传代码”的处理建议

程序员是如何看待“祖传代码”的&#xff1f; 祖传代码的由来 在实际的程序员工作中&#xff0c;祖传代码是常见的。因为真正的互联网职场生活中&#xff0c;业务变动调整频繁&#xff0c;每到一个新的业务线&#xff0c;第一件事就是熟悉现有工程代码&#xff0c;看旧文档等…

面试经典150题 -- 回溯 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 17 . 电话号码的字母组合 1 . 先创建一个下标 与 对应字符串映射的数组&#xff0c;这里使用hash表进行映射也是可以的 &#xff1b; 2 . 对于回溯 &#xff0c;…

论人类饮食多样性的偏好:为何人们倾向于每一餐都吃得不同

人类的饮食行为深深植根于生物进化、文化传承和社会心理等多个维度。细心观察日常生活&#xff0c;我们会发现大部分人在饮食选择上有着显著的多样化倾向&#xff0c;即使不是餐餐大鱼大肉&#xff0c;也会尽可能让每一顿饭的内容有所不同。本文旨在深入探讨这种饮食多样化偏好…

下班前几分钟,我彻底弄懂了YAML

目录 1. YAML语法1.1 Scalars1.2 Array1.3 Object1.4 复杂结构1.5 高级用法1.5.1 浮点数特殊值1.5.2 锚点与别名1.5.3 合并键 2. PyYAML的使用2.1 解析YAML2.2 生成YAML 3. YAML和JSON的区别Ref 1. YAML语法 YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种用…

JavaScript编写幻灯片

问题&#xff1a;创建一段带有幻灯片效果的JavaScript代码&#xff0c;要包含一个有4幅图片&#xff0c;设置定时器&#xff0c;每隔5秒切换一次图片&#xff0c;如果用户单击开始按钮&#xff0c;定时器启动&#xff0c;并开始进行图片切换&#xff0c;如果用户单击停止按钮&a…

Java实战:Spring Boot接口重试机制实现

本文将详细介绍如何在Spring Boot应用程序中实现接口重试机制。我们将探讨重试机制的基本概念&#xff0c;以及如何使用Spring Boot和第三方库来实现接口的重试功能。此外&#xff0c;我们将通过具体的示例来展示如何在Spring Boot应用程序中配置和使用接口重试机制&#xff0c…

python数据类型及转换

一、数据类型 数据类型分为数值型、布尔型、字符串型等 1.1数值类型 数值类型可以分为整数类型、浮点数类型、复数类型 1.1.1整数类型 (1)概念&#xff1a;整数类型指数值是没有小数部分的&#xff0c;包含正整数、负整数和0 (2)进制种类&#xff1a;十进制--->234、5…

Effective C++ 学习笔记 条款08 别让异常逃离析构函数

C并不禁止析构函数吐出异常&#xff0c;但它不鼓励你这样做。这是有理由的&#xff0c;考虑以下代码&#xff1a; class Widget { public:// ...~Widget() { /* ... */ } // 假设这个可能吐出一个异常 };void doSomething() {std::vector<Widget> v;// ... } // v…

【网站项目】139选课排课系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Redis 群集

简介 在现在的互联网大潮中&#xff0c;NoSQL可谓家喻户晓&#xff0c;Redis作为NoSOL大军中极其重要的一员&#xff0c;是我们走向架构道路的一条必经之路。 Redis介绍 Redis 数据库是一个非关系型数据库&#xff0c;在正式学习Redis之前&#xff0c;我们先来了解关系型数据库…

算法沉淀——动态规划之完全背包问题(leetcode真题剖析)

算法沉淀——动态规划之完全背包问题 01.【模板】完全背包02.零钱兑换03.零钱兑换 II04.完全平方数 完全背包问题是背包问题的一种变体&#xff0c;与01背包问题不同&#xff0c;它允许你对每种物品进行多次选择。具体来说&#xff0c;给定一个固定容量的背包&#xff0c;一组物…

TCPDump 使用教程

每次服务器网络不通的时候&#xff0c;总会听到一个声音&#xff0c;你去抓包啊&#xff0c;那这里就来介绍下TCPDump&#xff0c;一款强大的网络分析工具&#xff0c;可以捕获网络上的数据包&#xff0c;并进行分析。这款工具在网络管理员和安全专家中非常受欢迎。 一、安装 …

防火墙:网络防御的第一道防线

目录 引言 一、安全技术与防火墙 &#xff08;一&#xff09;安全技术 &#xff08;二&#xff09;防火墙的主要功能与分类 1.防火墙的主要功能 2.防火墙的分类 二、Linux防火墙的基本认识 &#xff08;一&#xff09;Netfilter &#xff08;二&#xff09;防火墙工具…

单调队列(347. 前 K 个高频元素239. 滑动窗口最大值)

单调队列和单调栈其实差不多,就是维护一个区间单调的队列或者是栈,单调队列就是我们所说的大顶堆小顶堆, //升序队列 小顶堆 great 小到大 priority_queue <int,vector<int>,greater<int> > pri_que; //降序队列 大顶堆 less 大到小 默认 priority_qu…

【AI视野·今日NLP 自然语言处理论文速览 第八十一期】Mon, 4 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 4 Mar 2024 Totally 48 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Mitigating Reversal Curse via Semantic-aware Permutation Training Authors Qingyan Guo, Rui Wang, Junlia…