当前位置: 首页 > news >正文

嵌入式系统开发【深入浅出】 GPIO 类设备的驱动程序

目录

GPIO管脚的输出功能相当于控制、输入相当于检测

使用GPIO基本流程

对于某一个管脚来说最多有几种功能?

拓展 【定时器与系统定时器】

决定定时长短的因素: 

普通定时器

系统定时器

STM32F103RBT6的时钟源有哪五种

sysclk 的时钟频率由哪个时钟源提供基础时钟频率

系统定时器有多少个寄存器, 每个寄存器的作用 

计数值的范围


  1. GPIO 类设备的驱动程序 

    1. 全名:general purpose inputs/outputs 通用的输入输出管脚 
    2. STM32F103RBT6  一共有5组  每组有16个管脚 【功能复用 】
    3. CPU是通过总线和外设通信的 故需要通过APB2总线使能GPIO管脚所在组的时钟
      1. AHB  系统内部的高速总线 
      2. APB  外设总线  
    4. GPIO管脚的输出功能相当于控制输入相当于检测

    5. 使用GPIO基本流程

      1. 看硬件电路原理图 
      2. 通过APB2使能GPIOX组的时钟
      3. 初始化GPIO引脚 [Pin、Mode、Speed]
      4. 实现功能
    6. 对于某一个管脚来说最多有几种功能?

      1. 输入
        1. 上拉输入
        2. 下拉输入
        3. 浮空输入
      2. 输出
        1. 开漏输出
        2. 推挽输出
      3. 复用
        1. 开漏复用
        2. 推挽复用
      4. 模拟
        1. 模拟输入功能
  2. 拓展 【定时器与系统定时器】

    1. 粗略的延时
      1. 使用循环语句
    2. 精确的延时
      1. 使用定时器
    3. 决定定时长短的因素: 
      1. 时钟频率
      2. 计数值 
    4. 普通定时器
      1. WDG   本质上也是定时器, 除了定时功能之外, 还可以让系统复位重启

      2. RTC     实时时钟  年 月 日  时 分 秒

    5. 系统定时器
      1. 系统定时器并不是由ST提供的, 而是由arm-core提供 
      2. 三种:systimer systick  sysclk 
    6. STM32F103RBT6的时钟源有哪五种
      1. HSE  系统外部高速时钟
      2. HSI   系统内部高速时钟
      3. PLL  倍频器、乘法器
      4. LSE  系统外部低速时钟
      5. LSI   系统内部低速时钟
    7. sysclk 的时钟频率由哪个时钟源提供基础时钟频率
      1. 因为系统内部时钟源, 比较不稳定, 所以由HSE提供系统时钟的时钟频率
    8. 系统定时器有多少个寄存器, 每个寄存器的作用 
      1. 校准寄存器(CALIB):SysTick->CALIB 寄存器提供了SysTick定时器的校准值和特征信息。其中包含了SysTick的最大重装载值(MAXRELOAD)、SysTick计数器的位宽(BITS)以及是否支持外部时钟源等信息。这些信息可以用于进行精确的时间测量和延时控制。

      2. 当前值寄存器(VAL):SysTick->VAL 寄存器用于记录SysTick定时器的当前计数值。当SysTick计数器递减时,该寄存器的值将不断减小。通过读取该寄存器的值,可以获取当前的计数值,用于实现时间测量、延迟操作等。

      3. 重装载值寄存器(LOAD):SysTick->LOAD 寄存器用于设置SysTick定时器的重装载值。当SysTick计数器计数到0时,会重新装载该寄存器中的值,并触发中断或清零计数器(取决于控制寄存器的配置)。通过设置该寄存器的值,可以确定SysTick定时器的中断或溢出的时间间隔。

      4. 控制和状态寄存器(CTRL):SysTick->CTRL 寄存器用于控制和配置SysTick定时器的工作方式。它包含了使能/禁止定时器、设置中断使能、选择时钟源等控制位。通过对该寄存器的配置,可以启用或停止SysTick定时器,并根据需要配置中断使能、选择时钟源等。

    9. 计数值的范围
      1. 在STM32F103R系列中,SysTick计数器的位宽为24位,其计数值范围应为0 ~ 2^24-1(0至16777215)。在这个范围内,计数器会从重装载值开始递减,并在递减到0时重新装载重装载值,并触发中断或清零计数器。
  3. 重要词汇
    1. peripheral 外设 
    2. prescaler 分频器

相关文章:

嵌入式系统开发【深入浅出】 GPIO 类设备的驱动程序

目录 GPIO管脚的输出功能相当于控制、输入相当于检测 使用GPIO基本流程 对于某一个管脚来说最多有几种功能? 拓展 【定时器与系统定时器】 决定定时长短的因素: 普通定时器 系统定时器 STM32F103RBT6的时钟源有哪五种 sysclk 的时钟频率由哪个时钟源提供基…...

项目管理必备的22个公式

大家好,我是老原。 趁着国庆时间比较空闲,给你们整理了一些项目管理必备的计算公式,一共22个。 每一个公式都给你们标注了适用情况和使用方法,为了方便你们理解,也加了一些例子,保准你看了就会。 觉得不…...

ccache加速编译速度

ccache https://gitee.com/lixiaoxmm/ccache.git 依赖hiredis、zstd(zstd的cmakelists.txt在build/cmake目录下) 下载mingw,https://www.mingw-w64.org/downloads/#w64devkit hiredis、zstd使用mingw编译 cmake -G “MinGW Makefiles” cmakecache.txt手动修改去掉网络下载,…...

Apache POI使用

1.导入坐标 <!-- poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${poi}</version></dependency><dependency><groupId>org.apache.poi</groupId><a…...

UNIQUE VISION Programming Contest 2023 Autumn(AtCoder Beginner Contest 323)

A - Weak Beats 链接 : A - Weak Beats 思路 : 模拟即可,如果在偶数位上出现了非0得元素&#xff0c;直接输出"No"后返回即可&#xff0c;循环顺利结束的话&#xff0c;就直接输出"Yes"; 代码 : #include<bits/stdc.h> #define IOS ios::sy…...

Docker 网络管理

Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker网桥是每个容器的默认网关。因为在同一宿主机…...

网络安全国家队-安防思考与实践

按照工信部“三同步”安全建设的统一要求&#xff0c;本项目的实施应具备符合等级保护要求的安全防护措施&#xff08;主要为传输控制、防火墙隔离、入侵检测、安全审计等网络安全措施&#xff1b;操作系统安全、数据库安全、防病毒管理、安全审计等基础系统安全措施&#xff0…...

epoll 定时器

参考&#xff1a; Linux下使用epoll监听定时器-CSDN博客 但是这个用的是gettimeofday。 本人使用的是 #include <stdlib.h> #include<stdio.h> #include <sys/timerfd.h> #include <sys/epoll.h> #include <unistd.h> #include <sys/time.…...

BUUCTF Java逆向解密 1

Class文件是Java编译后的二进制字节码文件。 我这里使用的是jadx-gui&#xff0c;直接将class文件拖进去即可 package defpackage;import java.util.ArrayList; import java.util.Scanner;/* renamed from: Reverse reason: default package */ /* loaded from: Reverse.clas…...

BUUCTF [MRCTF2020]Ez_bypass1

这道题全程我都是用bp做的 拿到题目 我们查看页面源代码得到 代码审计 我们要用get传入id和gg两个参数&#xff0c;id和gg的值要求不能相等&#xff0c;但是id和gg的md5强比较必须相等 if(isset($_GET[gg])&&isset($_GET[id])) {$id$_GET[id];$gg$_GET[gg];if (md5($…...

深入理解强化学习——强化学习和有监督学习

分类目录&#xff1a;《深入理解强化学习》总目录 通过前文的介绍&#xff0c;我们现在应该已经对强化学习的基本数学概念有了一定的了解。这里我们回过头来再看看一般的有监督学习和强化学习的区别。以图片分类为例&#xff0c;有监督学习&#xff08;Supervised Learning&…...

设计模式 - 结构型模式考点篇:装饰者模式(概念 | 案例实现 | 优缺点 | 使用场景)

目录 一、结构型模式 1.1、装饰者模式 1.1.1、概念 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、结构型模式 1.1、装饰者模式 1.1.1、概念 装饰者模式就是指在不改变现有对象结构的情况下&#xff0c;动态的给该对象增加一些职责&#xff08;增加额外功能&#…...

计算机竞赛 题目:基于深度学习的手势识别实现

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势识别实现 该项目较为新颖&#xff0c;适合作为竞赛课题…...

手撕各种排序

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握每种排序的方法&#xff0c;理解每种排序利弊…...

视频号的链接在哪,视频号视频链接地址获取办法!

不少人问视频号的链接在哪里可以获取&#xff0c;本质的在腾讯微信中目前视频号的链接是无法获取的&#xff0c;但好事多磨今天就分享一个第三方的视频号视频链接地址获取办法&#xff0c;希望对你有所帮助&#xff01; 1&#xff1a;在微信客户端中&#xff0c;我们可以通过搜…...

深度学习笔记之优化算法(六)RMSprop算法的简单认识

深度学习笔记之优化算法——RMSProp算法的简单认识 引言回顾&#xff1a;AdaGrad算法AdaGrad算法与动量法的优化方式区别AdaGrad算法的缺陷 RMProp算法关于AdaGrad问题的优化方式RMSProp的算法过程描述 RMSProp示例代码 引言 上一节对 AdaGrad \text{AdaGrad} AdaGrad算法进行…...

10架构管理之公司整体技术架构

一句话导读 公司的整体技术架构一般是公司的架构组、架构管理部、技术委员会等部门负责&#xff0c;需要对公司整体的技术架构进行把控和管理&#xff0c;确保信息系统的稳定性和可靠性&#xff0c;避免因技术架构不合理而导致的系统崩溃和数据丢失等问题&#xff0c;为公司的业…...

联邦学习综述

《Advances and Open Problems in Federated Learning》 选题&#xff1a;Published 10 December 2019-Computer Science-Found. Trends Mach. Learn. 联邦学习定义 联邦学习是一种机器学习设置&#xff0c;其中多个客户端在中央服务器或服务提供商的协调下协作解决机器学习…...

几行cmd命令,轻松将java文件打包成jar文件

1. 在任意目录下建立一个.java文件 2. 在当前目录下使用cmd命令&#xff1a; javac filename编译 如果报错则使用此命令javac -encoding UTF-8 filename 3.此时已成功生成.class文件 4. 可以手动添加MANIFEST.MF文件 Manifest-Version: 1.0 Main-Class: fileName 5.直接一…...

BuyVM 卢森堡 VPS 测评

description: 发布于 2023-07-05 BuyVM 卢森堡 VPS 测评 产品链接&#xff1a;https://my.frantech.ca/cart.php?gid39 1G口不限流量&#xff0c;续约3个月后升级为10G口突发。抗DMCA版权投诉。抗一般投诉。 大陆连通性还可以&#xff0c;延迟略高&#xff0c;不绕美。 CP…...

JavaScript 编写一个 数值转换函数 万以后简化 例如1000000 展示为 100万 万以下原来数值返回

很多时候 我们看一些系统 能够比较只能的展示过大的数值 例如 到万了 他就能展示出 多少 多少万 看着很奇妙 但实现确实非常的基础 我们只需要一个这样的函数 //数值转换函数 convertNumberToString(num) {//如果传入的数值 不是数字 且也无法转为数字 直接扔0回去if (!parse…...

PyG两个data Datsaset v.s. InMemoryDataset

可以看到InMemoryDataset 对CPU更加友好 https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#pytorch-lightning-wrappers...

ArcGIS Engine:视图菜单的创建和鹰眼图的实现

目录 01 创建项目 1.1 通过ArcGIS-ExtendingArcObjects创建窗体应用 1.2 通过C#-Windows窗体应用创建窗体应用 1.2.1 创建基础项目 1.2.2 搭建界面 02 创建视图菜单 03 鹰眼图的实现 3.1 OnMapReplaced事件的触发 3.2 OnExtentUpdated事件的触发 04 稍作演示 01 创建项目…...

POI 和 EasyExcel 操作 Excel

一、概述 目前操作 Excel 比较流行的就是 Apache POI 和阿里巴巴的 easyExcel。 1.1 POI 简介 Apache POI 是用 Java 编写的免费开源的跨平台的 Java API&#xff0c;Apache POI 提供 API 给 Java 程序对 Microsoft Office 格式文档读和写的常用功能。POI 为 “Poor Obfuscati…...

pytorch算力与有效性分析

pytorch Windows中安装深度学习环境参考文档机器环境说明3080机器 Windows11qt_env 满足遥感CS软件分割、目标检测、变化检测的需要gtrs 主要是为了满足遥感监测管理平台&#xff08;BS&#xff09;系统使用的&#xff0c;无深度学习环境内容swin_env 与 qt_env 基本一致od 用于…...

Sublime text启用vim模式

官方教程&#xff1a;https://www.sublimetext.com/docs/vintage.html vintage的github&#xff1a;https://github.com/sublimehq/Vintage...

爬虫进阶-反爬破解6(Nodejs+Puppeteer实现登陆官网+实现滑动验证码全自动识别)

一、NodejsPuppeteer实现登陆官网 1.环境说明 Nodejs——直接从官网下载最新版本&#xff0c;并安装 使用npm安装puppeteer:npm install puppeteer npm install xxx -registry https://registry.npm.taobao.org Chromium会自动下载&#xff0c;前提是网络通畅 2.实践操作…...

【Unity】RenderFeature笔记

【Unity】RenderFeature笔记 RenderFeature是在urp中添加的额外渲染pass&#xff0c;并可以将这个pass插入到渲染列队中的任意位置。内置渲染管线中Graphics 的功能需要在RenderFeature里实现,常见的如DrawMesh和Blit ​ 可以实现的效果包括但不限于 后处理&#xff0c;可以编写…...

golang gin——controller 模型绑定与参数校验

controller 模型绑定与参数校验 gin框架提供了多种方法可以将请求体的内容绑定到对应struct上&#xff0c;并且提供了一些预置的参数校验 绑定方法 根据数据源和类型的不同&#xff0c;gin提供了不同的绑定方法 Bind, shouldBind: 从form表单中去绑定对象BindJSON, shouldB…...

办公技巧:Excel日常高频使用技巧

目录 1. 快速求和&#xff1f;用 “Alt ” 2. 快速选定不连续的单元格 3. 改变数字格式 4. 一键展现所有公式 “CTRL ” 5. 双击实现快速应用函数 6. 快速增加或删除一列 7. 快速调整列宽 8. 双击格式刷 9. 在不同的工作表之间快速切换 10. 用F4锁定单元格 1. 快速求…...