当前位置: 首页 > 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…...

解码器精准调优:LoRA赋能Depth-Anything-V2实现绝对深度估计

1. LoRA技术如何革新Depth-Anything-V2的深度估计 当我在实验室第一次尝试用LoRA微调Depth-Anything-V2时&#xff0c;意外发现只需要调整解码器中1x1卷积层的极少量参数&#xff0c;就能让相对深度模型输出精确的绝对深度值。这就像给一个只会判断"远近"的模型突然装…...

Gon部署与运维:生产环境配置、监控和故障排除完整手册

Gon部署与运维&#xff1a;生产环境配置、监控和故障排除完整手册 【免费下载链接】gon Your Rails variables in your JS 项目地址: https://gitcode.com/gh_mirrors/go/gon Gon是一款专为Rails应用设计的实用工具&#xff0c;能够轻松实现Rails变量在JavaScript中的共…...

BG3ModManager完整教程:高效管理博德之门3模组的实用指南

BG3ModManager完整教程&#xff1a;高效管理博德之门3模组的实用指南 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager BG3ModManager是一款专为《博德之门3》玩家设计的模组管理工具&…...

打破游戏边界:Sunshine构建你的无缝云游戏体验

打破游戏边界&#xff1a;Sunshine构建你的无缝云游戏体验 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想象一下这样的场景&#xff1a;你在客厅的智能电视上玩着3A大作&#x…...

抖音批量下载神器:告别手动保存,一键收藏创作者全部作品

抖音批量下载神器&#xff1a;告别手动保存&#xff0c;一键收藏创作者全部作品 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...

CPU 亲和性

CPU 亲和性本质CPU 亲和性 让进程 / 线程只在指定的 CPU 核心上运行的调度约束。内核里叫&#xff1a;sched_affinity&#xff08;调度亲和性&#xff09;作用&#xff1a;提高 L1/L2/L3 缓存命中率减少 上下文切换&#xff08;context switch&#xff09;避免跨 NUMA 节点访问…...

学术写作“变形记”:书匠策AI如何让课程论文从“青铜”变“王者”——解锁AI时代论文写作新姿势

论文写作&#xff0c;曾是无数学生的“噩梦”&#xff1a;选题撞车、文献堆积如山、逻辑混乱如麻、格式调整让人抓狂……如今&#xff0c;随着人工智能技术的爆发&#xff0c;学术写作的“游戏规则”正在被彻底改写。书匠策AI&#xff08;官网&#xff1a;www.shujiangce.com&a…...

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别+关键资质自动核验系统

Qwen3.5-35B-A3B-AWQ-4bit企业应用&#xff1a;HR招聘简历图识别关键资质自动核验系统 1. 企业招聘场景的痛点分析 在传统HR招聘流程中&#xff0c;简历筛选和资质核验是最耗费人力的环节之一。每天面对堆积如山的纸质简历和PDF文件&#xff0c;HR需要&#xff1a; 手动翻阅…...

深耕纪实创作 AVG Media 以专业能力赋能纪录片产业发展

在全球内容产业快速迭代的当下&#xff0c;纪录片凭借真实的叙事力量、深厚的人文价值与多元的传播场景&#xff0c;成为内容领域中兼具艺术价值与商业价值的重要载体。国内纪录片行业历经多年发展&#xff0c;形成了多元主体参与、创作方向细分、国际合作深化的行业格局&#…...

3个核心功能让Windows优化变得如此简单:Winhance中文版深度体验

3个核心功能让Windows优化变得如此简单&#xff1a;Winhance中文版深度体验 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Wi…...