嵌入式系统开发【深入浅出】 GPIO 类设备的驱动程序
目录
GPIO管脚的输出功能相当于控制、输入相当于检测
使用GPIO基本流程
对于某一个管脚来说最多有几种功能?
拓展 【定时器与系统定时器】
决定定时长短的因素:
普通定时器
系统定时器
STM32F103RBT6的时钟源有哪五种
sysclk 的时钟频率由哪个时钟源提供基础时钟频率
系统定时器有多少个寄存器, 每个寄存器的作用
计数值的范围
-
GPIO 类设备的驱动程序
- 全名:general purpose inputs/outputs 通用的输入输出管脚
- STM32F103RBT6 一共有5组 每组有16个管脚 【功能复用 】
- CPU是通过总线和外设通信的 故需要通过APB2总线使能GPIO管脚所在组的时钟
- AHB 系统内部的高速总线
- APB 外设总线
-
GPIO管脚的输出功能相当于控制、输入相当于检测
-
使用GPIO基本流程
- 看硬件电路原理图
- 通过APB2使能GPIOX组的时钟
- 初始化GPIO引脚 [Pin、Mode、Speed]
- 实现功能
-
对于某一个管脚来说最多有几种功能?
- 输入
- 上拉输入
- 下拉输入
- 浮空输入
- 输出
- 开漏输出
- 推挽输出
- 复用
- 开漏复用
- 推挽复用
- 模拟
- 模拟输入功能
- 输入
-
拓展 【定时器与系统定时器】
- 粗略的延时
- 使用循环语句
- 精确的延时
- 使用定时器
-
决定定时长短的因素:
- 时钟频率
- 计数值
-
普通定时器
-
WDG 本质上也是定时器, 除了定时功能之外, 还可以让系统复位重启
-
RTC 实时时钟 年 月 日 时 分 秒
-
-
系统定时器
- 系统定时器并不是由ST提供的, 而是由arm-core提供
- 三种:systimer systick sysclk
-
STM32F103RBT6的时钟源有哪五种
- HSE 系统外部高速时钟
- HSI 系统内部高速时钟
- PLL 倍频器、乘法器
- LSE 系统外部低速时钟
- LSI 系统内部低速时钟
-
sysclk 的时钟频率由哪个时钟源提供基础时钟频率
- 因为系统内部时钟源, 比较不稳定, 所以由HSE提供系统时钟的时钟频率
-
系统定时器有多少个寄存器, 每个寄存器的作用
-
校准寄存器(CALIB):
SysTick->CALIB寄存器提供了SysTick定时器的校准值和特征信息。其中包含了SysTick的最大重装载值(MAXRELOAD)、SysTick计数器的位宽(BITS)以及是否支持外部时钟源等信息。这些信息可以用于进行精确的时间测量和延时控制。 -
当前值寄存器(VAL):
SysTick->VAL寄存器用于记录SysTick定时器的当前计数值。当SysTick计数器递减时,该寄存器的值将不断减小。通过读取该寄存器的值,可以获取当前的计数值,用于实现时间测量、延迟操作等。 -
重装载值寄存器(LOAD):
SysTick->LOAD寄存器用于设置SysTick定时器的重装载值。当SysTick计数器计数到0时,会重新装载该寄存器中的值,并触发中断或清零计数器(取决于控制寄存器的配置)。通过设置该寄存器的值,可以确定SysTick定时器的中断或溢出的时间间隔。 -
控制和状态寄存器(CTRL):
SysTick->CTRL寄存器用于控制和配置SysTick定时器的工作方式。它包含了使能/禁止定时器、设置中断使能、选择时钟源等控制位。通过对该寄存器的配置,可以启用或停止SysTick定时器,并根据需要配置中断使能、选择时钟源等。
-
-
计数值的范围
- 在STM32F103R系列中,SysTick计数器的位宽为24位,其计数值范围应为0 ~ 2^24-1(0至16777215)。在这个范围内,计数器会从重装载值开始递减,并在递减到0时重新装载重装载值,并触发中断或清零计数器。
- 粗略的延时
- 重要词汇
- peripheral 外设
- 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得元素,直接输出"No"后返回即可,循环顺利结束的话,就直接输出"Yes"; 代码 : #include<bits/stdc.h> #define IOS ios::sy…...
Docker 网络管理
Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机…...
网络安全国家队-安防思考与实践
按照工信部“三同步”安全建设的统一要求,本项目的实施应具备符合等级保护要求的安全防护措施(主要为传输控制、防火墙隔离、入侵检测、安全审计等网络安全措施;操作系统安全、数据库安全、防病毒管理、安全审计等基础系统安全措施࿰…...
epoll 定时器
参考: 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,直接将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两个参数,id和gg的值要求不能相等,但是id和gg的md5强比较必须相等 if(isset($_GET[gg])&&isset($_GET[id])) {$id$_GET[id];$gg$_GET[gg];if (md5($…...
深入理解强化学习——强化学习和有监督学习
分类目录:《深入理解强化学习》总目录 通过前文的介绍,我们现在应该已经对强化学习的基本数学概念有了一定的了解。这里我们回过头来再看看一般的有监督学习和强化学习的区别。以图片分类为例,有监督学习(Supervised Learning&…...
设计模式 - 结构型模式考点篇:装饰者模式(概念 | 案例实现 | 优缺点 | 使用场景)
目录 一、结构型模式 1.1、装饰者模式 1.1.1、概念 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、结构型模式 1.1、装饰者模式 1.1.1、概念 装饰者模式就是指在不改变现有对象结构的情况下,动态的给该对象增加一些职责(增加额外功能&#…...
计算机竞赛 题目:基于深度学习的手势识别实现
文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的手势识别实现 该项目较为新颖,适合作为竞赛课题…...
手撕各种排序
> 作者简介:დ旧言~,目前大一,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:掌握每种排序的方法,理解每种排序利弊…...
视频号的链接在哪,视频号视频链接地址获取办法!
不少人问视频号的链接在哪里可以获取,本质的在腾讯微信中目前视频号的链接是无法获取的,但好事多磨今天就分享一个第三方的视频号视频链接地址获取办法,希望对你有所帮助! 1:在微信客户端中,我们可以通过搜…...
深度学习笔记之优化算法(六)RMSprop算法的简单认识
深度学习笔记之优化算法——RMSProp算法的简单认识 引言回顾:AdaGrad算法AdaGrad算法与动量法的优化方式区别AdaGrad算法的缺陷 RMProp算法关于AdaGrad问题的优化方式RMSProp的算法过程描述 RMSProp示例代码 引言 上一节对 AdaGrad \text{AdaGrad} AdaGrad算法进行…...
10架构管理之公司整体技术架构
一句话导读 公司的整体技术架构一般是公司的架构组、架构管理部、技术委员会等部门负责,需要对公司整体的技术架构进行把控和管理,确保信息系统的稳定性和可靠性,避免因技术架构不合理而导致的系统崩溃和数据丢失等问题,为公司的业…...
联邦学习综述
《Advances and Open Problems in Federated Learning》 选题:Published 10 December 2019-Computer Science-Found. Trends Mach. Learn. 联邦学习定义 联邦学习是一种机器学习设置,其中多个客户端在中央服务器或服务提供商的协调下协作解决机器学习…...
几行cmd命令,轻松将java文件打包成jar文件
1. 在任意目录下建立一个.java文件 2. 在当前目录下使用cmd命令: 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 测评 产品链接:https://my.frantech.ca/cart.php?gid39 1G口不限流量,续约3个月后升级为10G口突发。抗DMCA版权投诉。抗一般投诉。 大陆连通性还可以,延迟略高,不绕美。 CP…...
基于Web的Ollama客户端:本地大模型交互的图形化解决方案
1. 项目概述:一个与本地大模型交互的现代客户端 如果你最近在本地部署了像 Llama 3、Mistral 或 Qwen 这类开源大语言模型,大概率会接触到 Ollama 这个工具。它让模型的下载、运行和管理变得异常简单,一条 ollama run llama3 命令就能开启对…...
向量寄存器文件优化:Register Dispersion技术解析
1. 向量寄存器文件的技术挑战与优化背景在处理器架构设计中,向量寄存器文件(Vector Register File, VRF)作为向量处理单元(VPU)的核心组件,承担着存储和管理向量数据的关键任务。传统VRF设计通常采用固定数…...
MAA助手:解放双手的明日方舟全自动游戏管理工具实战指南
MAA助手:解放双手的明日方舟全自动游戏管理工具实战指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://g…...
BEAGLE库终极指南:如何快速实现高性能系统发育分析
BEAGLE库终极指南:如何快速实现高性能系统发育分析 【免费下载链接】beagle-lib general purpose library for evaluating the likelihood of sequence evolution on trees 项目地址: https://gitcode.com/gh_mirrors/be/beagle-lib 你是否在系统发育分析中遇…...
课程第四天(基础)
while 循环语句whilewhile(){}:当小括号条件成立了执行{}里面的东西,条件不成立的时候,循环就结束了格式:while (条件){(执行语句)}do...while格式:do{(执行语句)}while(…...
Cursor AI插件开发指南:构建企业级智能编码助手
1. 项目概述:一个为开发者而生的智能编码伴侣如果你是一名开发者,每天在IDE里敲代码的时间超过8小时,那你一定对“上下文切换”和“信息查找”这两件事深恶痛绝。想象一下,你正在写一个复杂的API接口,突然需要回忆上周…...
从SCI到中文核心:Endnote自定义Style保姆级教程,打造你的专属GB/T7714-2005模板
从SCI到中文核心:Endnote自定义Style保姆级教程,打造你的专属GB/T7714-2005模板 当你需要向不同期刊投稿时,是否遇到过参考文献格式反复调整的困扰?一个固定的Endnote模板往往难以满足多样化的投稿需求,尤其是中英文混…...
论文Review 3DGS | Deformable Beta Splatting | 用 Beta Kernel 替代 Gaussian Kernel 的实时辐射场渲染方法
基本信息 题目:Deformable Beta Splatting 作者:Rong Liu, Dylan Sun, Meida Chen, Yue Wang, Andrew Feng 单位:University of Southern California / Institute for Creative Technologies 时间:2025 年 5 月,ar…...
STM32F407驱动0.96寸OLED屏:除了SPI,你还可以试试这几种通信方式(I2C/8080对比)
STM32F407驱动0.96寸OLED屏:SPI、I2C与8080接口的深度技术选型指南 当你在STM32F407VET6核心板上连接0.96寸OLED模块时,第一个技术决策往往就是通信接口的选择。这个看似简单的选择实际上会影响整个项目的硬件设计复杂度、软件维护成本以及最终显示性能。…...
Transformer架构与混合专家系统(MoE)的技术演进与应用
1. Transformer架构与混合专家系统(MoE)的演进之路2017年,Transformer架构的横空出世彻底改变了自然语言处理的游戏规则。这种基于自注意力机制的架构不仅在各种序列建模任务中展现出惊人性能,更为后续的大规模语言模型奠定了坚实基础。然而,…...
