STM32-GPIO

news/2024/4/30 3:15:27

🤓🤓🤓

  • 1
  • 2
    • 2.1
  • 2.2
    • 2.3
  • 3
  • 4
    • 4.1
    • 4.2
    • 4.3
    • 4.4
    • 4.5
    • 4.6
    • 4.7
    • 4.8
  • 5
  • 6
  • 7
  • 8
  • 8.1
  • 8.2
  • 9
    • 9.1
    • 9.2

  • STM32 第一个外设

在这里插入图片描述

1

在这里插入图片描述

  • 对我们来说 和IO口没区别 ST公司非叫GPIO

2

在这里插入图片描述

2.1

在这里插入图片描述

  • 第二个是超频了 F1 72M 这翻转就36

2.2

在这里插入图片描述

  • 有cmos 和ttl两种
  • 数据手册里给出整个芯片最低电流为150ma 单个都这么大 早超了 可以有其他扩流方案 外接其他(继电器?)

在这里插入图片描述

  • FT的就是TTL

2.3

在这里插入图片描述

  • 电源引脚 带V的
  • 晶振引脚 低速那个32 就对应了频率
  • 复位引脚 脚位为7
  • 下载引脚 很多 有串口的 swd JTag
  • BOOT引脚 F1系列 有两 BOOT1 在PB2上 复用
  • GPIO引脚 P开头的都是
  • LQFP好像是封装模式 他这图里

在这里插入图片描述

  • 精英每组都是16个

3

在这里插入图片描述

  • 这两区别是 上下拉电阻 F1的只有输入的时候有
  • 左右来看 是内部和外部
  • 上下来看 是输入 输出
    在这里插入图片描述
  • 讲了 输入
  • 模拟输入和复用功能输入 可以看成 51里 第二功能
  • 模拟输入那 外设就是ADC DAC

在这里插入图片描述

  • 位设置 那个寄存器 是BSRR
  • 上面那两路都是通用输出 最上面是通过BSRR间接的
  • 最下面外设 比如串口

在这里插入图片描述

  • 介绍几个器件
  • 保护二极管 保护输入呢 过高或过低

在这里插入图片描述

  • 二极管有钳位作用 要加上这个电阻
  • 下面那个 -5v 一样道理
  • 保护二极管 是很弱的保护

在这里插入图片描述

  • 阻值是30k~50k I很小 所以弱的上下拉电阻

在这里插入图片描述

在这里插入图片描述

  • 简单来说 不相同就导通

4

在这里插入图片描述

  • 四个输入 四个输出 前面三个 作为通用输入
  • 完全浮空就是没有使用上下拉
    在这里插入图片描述
  • I方c数据 时钟引脚就用这个
  • 25ma 那个是最大输出电流

4.1

在这里插入图片描述

  • 再通过CPU读取IDR寄存器
    在这里插入图片描述
  • 这种情况下 空闲时就是高阻态 由后面决定
  • 好像上下拉电阻 这种情况下就是为了防止高阻态?
  • 和以前单片机那个上拉电阻有点不一样了 那个是为了 保证 1 和 0 正确
  • 这里更像是为了IO口状态确定 就好像本应该是混沌

4.2

在这里插入图片描述

  • 空闲时 外部高阻态 IDR 和 IO都是高电平

4.3

在这里插入图片描述

  • 为啥下拉 1 也对应1
  • IDR和 IO口 0
  • 这个vss就是地把

4.4

在这里插入图片描述

4.5

在这里插入图片描述

  • F1 在输出时 上下拉电阻 是关闭的 硬件决定
  • 配置为输出模式时 仍可以读取引脚高低电平
  • 这个括号内部 是针对其他系列的 F1 此时上下拉电阻不起作用
  • 要买上拉电阻 呜呜呜
    在这里插入图片描述
  • 输出控制里面有个取反

4.6

在这里插入图片描述

  • 控制输出的地方变了

4.7

在这里插入图片描述

  • 驱动能力强是 如 VDD直接连外部 没有经过电阻 单纯由电源控制

4.8

在这里插入图片描述

在这里插入图片描述

  • 开漏 外接上拉电阻 电源为5 V时 可以

5

在这里插入图片描述

  • 有七个
  • 每一组对应七个 x就是GPIO A~E

在这里插入图片描述

在这里插入图片描述

  • 高+低 64 位 GPIO一组16个引脚 1个引脚 要用4个位配置
  • CRL PA0 ~ PA7
    在这里插入图片描述

在这里插入图片描述

  • 用ODR来配置 不用IDR 估计占用着呢
    在这里插入图片描述
  • 再把第10个设置为1 就是PA10上拉输入了
  • 每一个位 对应1个IO口
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 都可以举例来学

在这里插入图片描述

在这里插入图片描述

  • 这里中断风险 指操作同一个寄存器

6

在这里插入图片描述

  • 选择时钟(有的用默认的) 开启时钟

  • 参数设置 比如GPIO工作模式

  • IO 除GPIO外 usart/uart 串口 把IO复用为串口的数据引脚

  • 中断 比如串口 有发送中断 和 接受中断

  • 后两可选

  • 针对所有外设

在这里插入图片描述

  • 比如串口从特定数据寄存器读取数据
  • 可选
  • GPIO 这个外设 用不到4

7

在这里插入图片描述

  • 一个宏 四个函数 HAL库提供
  • 3那个是翻转
  • 这不选择时钟 是因为GPIO挂载在总线上 随系列不同

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 就是介绍一下怎么使能的吧
    在这里插入图片描述
  • ADC和定时器 也是这么开的

在这里插入图片描述

  • 这是直接去function里面 找的 也可以搜

在这里插入图片描述

  • 7个寄存器
    在这里插入图片描述

  • GPIO 寄存器基地址 这旁边都是寄存器基地址 寄存器结构体 + 基地址

在这里插入图片描述

  • GPIO初始化相关结构体
  • 成员赋的值 不能随意 有参考

在这里插入图片描述

  • 最后一个是pin的断言测试

在这里插入图片描述

  • 输入模式 3个 加上下面五个 就8种工作模式了

在这里插入图片描述

  • 就在上面下面一点

在这里插入图片描述

在这里插入图片描述

  • WritePin 也可以从这找到

在这里插入图片描述

在这里插入图片描述

  • 再设置参数接受这个返回值

8

在这里插入图片描述

在这里插入图片描述

  • 不懂这个为啥是忽略的了
  • 2.88mA 比上面低 影响不大 亮度低一点
  • 蓝色的是有电源了

在这里插入图片描述

  • 输入是采集 输出是控制
  • 推挽可以高低电平 驱动能力强
  • 这个共阳 开漏也可以 高阻态相当断开 也就灭了

在这里插入图片描述

  • 开漏右边这个不行 左边这个估计行
    在这里插入图片描述

8.1

在这里插入图片描述

  • 直接复制的这个
  • 要编写LED驱动 要创建板级驱动文件 BSP

在这里插入图片描述

  • 保存到BSP/LED 里

在这里插入图片描述

  • 再创建分组把led.c 添加进来(不懂为啥创建分组 和不添加led.h)

在这里插入图片描述

  • 复制里面的 固定搭配

在这里插入图片描述

  • 防止led.h被重复包含和编译

在这里插入图片描述

  • 因为用PB5
  • 配置步骤前两步
  • 这没设置pull 用不上 不用管 就算设置了 好像也没用
    在这里插入图片描述
  • 这个横向分屏
    在这里插入图片描述
  • 开始灭着
  • 这机霸写 怎么在GPIO初始化前 写错了 没事居然
    在这里插入图片描述
  • 在把这个函数声明 放在.h里 方便后续调用

在这里插入图片描述

  • 这个PB5是红灯的

在这里插入图片描述

  • 那个led_int 那开始 出了个三角 类似这种 后来改了led.c 最后加个空行(其定义处)
  • 不懂这包含头文件的关系

在这里插入图片描述

  • 逗号后面加空格 代码规范

在这里插入图片描述

  • 又试了一下 翻转
    在这里插入图片描述
  • 1居然不行 0u也不行

8.2

  • 见开发指南
  • 这把红的定义成LED了
  • 有些为了增加移植性

9

9.1

在这里插入图片描述

  • 抖动期间 判断不了 是 1还是 0
  • 抖动时间一般 5~10ms
  • 除了软件消抖 还有硬件的

在这里插入图片描述

  • 1 3分开
  • 不按下是 高阻态 要通过上下拉来改变高阻态
  • 1 高阻态(所以下拉 把高阻态改成0) 后面类似
  • 3中通用输入 IO口电平不一样

在这里插入图片描述

  • 这是精英版的
  • 首先复制前面LED的文件夹
  • 然后BSP里添加 KEY文件夹
  • 新建key.c(并添加分组) 和 key.h

在这里插入图片描述

  • 速度没意义 这里采集
    在这里插入图片描述

在这里插入图片描述

  • 用的KEY1 PE3

在这里插入图片描述

9.2

  • 先不必理会

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

鹅厂实习offer

#转眼已经银四了,你收到offer了吗# 本来都打算四月再投实习了,突然三月初被wxg捞了(一年前找日常实习投的简历就更新了下),直接冲了,流程持续二十多天,结果是运气还不错,应该是部门比…

解析大语言模型训练三阶段

大语言模型的训练过程一般包括3个阶段:预训练(Pre-training)、SFT(有监督的微调,Supervised-Finetuning)以及RLHF(基于人类反馈的强化学习,Reinforcement Learning from Human Feedb…

K8S容器空间不足问题分析和解决

如上图,今天测试环境的K8S平台出现了一个问题,其中的一个容器报错:Free disk space below threshold. Available: 3223552 bytes (threshold: 10485760B),意思服务器硬盘空间不够了。这个问题怎么产生的,又怎么解决的呢…

解决npm install安装node-sass包容易失败的问题

具体问题如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

蓝桥杯加训

1.两只塔姆沃斯牛&#xff08;模拟&#xff09; 思路&#xff1a;人和牛都记录三个数据&#xff0c;当前坐标和走的方向&#xff0c;如果人和牛的坐标和方向走重复了&#xff0c;那就说明一直在绕圈圈&#xff0c;无解 #include<iostream> using namespace std; const i…

汽车疲劳测试试验平台技术要求(北重厂家)

汽车疲劳测试试验平台技术要求通常包括以下几个方面&#xff1a; 车辆加载能力&#xff1a;测试平台需要具备足够的承载能力&#xff0c;能够同时测试多种车型和不同重量的车辆。 动力系统&#xff1a;测试平台需要具备稳定可靠的动力系统&#xff0c;能够提供足够的力和速度来…