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

  • 先不必理会
相关推荐
stm32发烧友15 小时前
基于STM32的智能家居安防系统设计
stm32·嵌入式硬件·智能家居
LightningJie16 小时前
STM32(hal库)中的定时器从模式TIM_SlaveConfigTypeDef结构体中的含义,以及可选参数的含义都是什么意思
stm32·单片机·嵌入式硬件
小齿轮lsl16 小时前
无桥Boost-PFC 双闭环控制MATLAB仿真
单片机·嵌入式硬件·matlab·电力电子·电源硬件·pfc
Matlab程序猿小助手19 小时前
【MATLAB源码-第213期】基于matlab的16QAM调制解调系统软硬判决对比仿真,输出误码率曲线对比图。
开发语言·嵌入式硬件·算法·matlab·机器人
鱼与仙人掌20 小时前
STM32:ADC
stm32·单片机·嵌入式硬件
yangpipi-20 小时前
Linux系统程序设计--2. 文件I/O
linux·stm32·单片机
沐欣工作室_lvyiyi1 天前
汽车牌照识别系统的设计与仿真(论文+源码)
人工智能·单片机·fpga开发·汽车·单片机毕业设计·matlab车牌识别
努力的里1 天前
【STM32开发】-FreeRTOS开发入手学习
stm32·学习·freertos·rtos
wenchm1 天前
细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法
stm32·单片机·实时音视频
雷打不动的晴天1 天前
关于PCB供电保护的问题
嵌入式硬件