STM32-GPIO

🤓🤓🤓

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

  • 先不必理会
相关推荐
清风666666几秒前
基于单片机的图书馆智能座位管理平台
数据库·单片机·嵌入式硬件·毕业设计·课程设计
得单片机的运1 小时前
STM32的以太网的搭建
stm32·单片机·嵌入式硬件·物联网·以太网·iot·w5500
酷飞飞2 小时前
RTC和看门狗基于GD32F407VE的天空星的配置
stm32·单片机·嵌入式硬件·mcu
qq_401700413 小时前
STM32的HardFault错误处理技巧
stm32
WD137298015574 小时前
WD5030A,24V降5V,15A 大电流,应用于手机、平板、笔记本充电器
stm32·单片机·嵌入式硬件·智能手机·汽车·电脑·51单片机
日更嵌入式的打工仔4 小时前
GPIO 中断通用配置指南
stm32·单片机·嵌入式硬件
平凡灵感码头4 小时前
基于 STM32 的智能门锁系统,系统界面设计
stm32·单片机·嵌入式硬件
Truffle7电子5 小时前
STM32理论 —— 存储、中断
stm32·嵌入式硬件·嵌入式·存储·中断
报错小能手5 小时前
linux学习笔记(32)网络编程——UDP
单片机·嵌入式硬件
XiangrongZ7 小时前
江协科技STM32课程笔记(四)—定时器TIM(输入捕获)
笔记·科技·stm32