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

stm32week14

stm32学习

十.GPIO

2.基本结构

基本结构:

图片消失了

F1与其它的的最大区别是上下拉电阻的位置
施密特触发器是一种整形电路,可以将非标准方波,整形成方波

图片消失了

图中MOS管的输出规则:

图片消失了

3.8中工作模式

①输入浮空:

  1. 上下拉电阻均不工作
  2. MOS管关闭
  3. 输入引导至寄存器然后读出
  4. 空闲时,IO状态不确定

②输入上拉:

  1. 上拉电阻工作
  2. MOS管关闭
  3. 输入引导至寄存器然后读出
  4. 空闲时,IO呈现高电平

③输入下拉:

  1. 下拉电阻工作
  2. MOS管关闭
  3. 输入引导至寄存器然后读出
  4. 空闲时,IO呈现低电平

④模拟输入:

  1. 上下拉电阻均不工作
  2. MOS管关闭
  3. 施密特触发器关闭,输入引导至模拟输入

⑤开漏输出:

  1. 上下拉电阻均不工作
  2. P-MOS管关闭
  3. 往ODR(输出控制)输出0,则N-MOS管导通;输出1则关闭
  4. 施密特触发器打开(允许输入)
  5. 不会输出高电平,必须有外部或内部上拉才能输出1

⑥复用开漏输出:

  1. 上下拉电阻均不工作
  2. P-MOS管关闭
  3. 往ODR(输出控制)输出0,则N-MOS管导通;输出1则关闭
  4. 施密特触发器打开(允许输入)
  5. 不会输出高电平,必须有外部或内部上拉才能输出1
  6. 输出来自片上外设

⑦推挽输出:

  1. 上下拉电阻均不工作
  2. 往ODR输出0,则N-MOS管导通;输出1,则P-MOS管导通
  3. 施密特触发器打开(允许输入)
  4. 可输出高低电平

⑧复用推完输出:

  1. 上下拉电阻均不工作
  2. 往ODR输出0,则N-MOS管导通;输出1,则P-MOS管导通
  3. 施密特触发器打开(允许输入)
  4. 可输出高低电平
  5. 输出来自片上外设

F1与其它系列的GPIO的不同:

  1. F1在输出模式,禁止使用内部上下拉,其它系列允许
  2. 不同系列IO翻转速度不同

9.GPIO的寄存器

一共7个寄存器:

  1. CRL:控制位的低位,配置工作模式,输出速度
  2. CRH:控制位的高位
  3. IDR:输入数据
  4. ODR:输出数据
  5. BSRR:设置ODR寄存器的值
  6. BRR:F4之后没有,一般不用
  7. LCKR:配置锁定,用得不多

CRL和CRH的寄存器相同:

图片消失了

CNF(Configuration Bits配置位)用于细化引脚工作模式的关键参数

IDR和ODR的寄存器相同:

图片消失了

BSRR(Bit Set/Reset Register)寄存器:

图片消失了

ODR和BSRR的区别:使用ODR,在读和修改访问之间产生中断,可能会产生风险;BSRR则无风险,所以一般用BSRR(HAL库中的WritePin用的就是BSRR)

10.配置步骤

①使能时钟:__HAL_RCC_GPIOx_CLK_ENABLE()
②设置工作模式:HAL_GPIO_Init()
相关函数:
HAL_GPIO_WritePin(…)
HAL_GPIO_TogglePin(…)
HAL_GPIO_ReadPin(…)

初始化函数示例:

图片消失了

十一.中断

1.介绍

中断:打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断

GPIO外部中断简图:

图片消失了
http://www.xdnf.cn/news/3868.html

相关文章:

  • 主机电路安全防护系统哪个厂家做
  • 招聘绩效效果评估方案与优化路径
  • 35、C# 中的反射(Reflection)
  • 深入理解 Spring MVC:DispatcherServlet 与视图解析机制​
  • 快速弄懂POM设计模式
  • 1991年-2023年 上市公司-重污染企业数据 -社科数据
  • GitHub 趋势日报 (2025年05月03日)
  • 多模态大语言模型arxiv论文略读(五十九)
  • STM32教程:ADC原理及程序(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • 数电填空题整理(适用期末考试)
  • Linux网络编程:套接字
  • C++类_匿名类
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 2 |蜂窝 LBS on Tracker:从 AT 命令到定位结果
  • 今天python练习题
  • MYSQL-联合查询
  • 【前端】【总复习】HTML
  • 基于 ESP32 和 GC9D01 0.71寸TFT屏幕的逼真眼睛与写轮眼动态显示
  • Spring Boot Jpa封装快速构建Specification、OrderBy、Pageable的查询条件
  • 【Python】一直没搞懂生成器是什么。。
  • 【25软考网工】第五章(5)ICMP和ICMPv6、NDP、IP组播技术和MPLS
  • JavaScript基础-分支流程控制
  • strstr()和strpbrk()函数的区别
  • 学习黑客开源情报
  • Go语言接口实现面对对象的三大特征
  • 基于大模型的隐睾(睾丸可触及)预测及临床干预策略研究报告
  • spring中的@Profile注解详解
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.3 窗口函数与高级聚合(ROW_NUMBER()/RANK()/SUM() OVER())
  • 民法学学习笔记(个人向) Part.3
  • Python 库 petrel_client.client 浅入浅出
  • 【CISCO】什么是静态路由(Static Route)?ip route 192.0.1.0 255.255.255.0 200.0.0.1