IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> cubemx配置stm32(三)__GPIO的输入输出 -> 正文阅读

[嵌入式]cubemx配置stm32(三)__GPIO的输入输出

cubemx配置stm32(三)__GPIO的输入输出

1.建立工程并进行核心配置

根据文章2.使用cubemx配置stm32(二)__核心配置 进行如下配置:
CubeMX新建工程
CubeMX图形配置调试时钟信号
CubeMX图形配置时钟树
CubeMX图形配置调试接口

检查配置:

img

配置详解

1.配置选择输入输出

img

比如LED就要配置输出,按键就要配置输入

2.配置为输出时配置详解(此时我把此芯片PB1配置为输出,其他芯片其他引脚都可以,需要参考手中开发板的原理图)

img

(1).GPIO output level (引脚初始电平设置 )

  • High 输出初始化为高电平
  • Low 输出初始化为低电平
    (2).GPIO mode ( GPIO 输出模式)
  • Output Push pull 推挽输出 强高低电平,可以为IO设备供电
  • Output Open Drain 开漏输出模式 为强低电平,只有低电平可以为IO设备供电,但是高电平时只可以作为一个信号输出

(3).GPIO Pull-up/Pull-dowm (上拉下拉电阻)

  • No pull-up and no pull-down无上拉或下拉
  • pull-up 内部上拉电阻
  • Pull-dowm 内部下拉电阻

(4).Maxinum output speed(引脚速度设置)

  • Low 低速
  • Medium 中速
  • High 高速
  • Very High 高速

(5).User Label(用户标签)

  • 给引脚设置名称 如LED0

2.配置为输入时配置详解(此时我把此芯片PH3配置为输入,其他芯片其他引脚都可以,需要参考手中开发板的原理图)

img

(1).GPIO mode ( GPIO 输入模式)

  • Input mode 输入模式

(2).GPIO Pull-up/Pull-dowm (上拉下拉电阻)

  • No pull-up and no pull-down无上拉或下拉
  • pull-up 内部上拉电阻
  • Pull-dowm 内部下拉电阻

如下图,KEY0,KEY1一端接地,若按键按下就为低电平,我们应让按键没有按下时按键为高电平,所以要内部上拉,上拉后在不按键时信号为高电平

同理KEY_UP一端接VCC,若按键按下就为高电平,我们应让按键没有按下时按键为低电平,所以要内部下拉,下拉后在不按键时信号为低电平

img

(3).User Label(用户标签)

  • 给引脚设置名称 如KEY0

2.示例:配置PB1 PB0 PH3,并生成代码

img

img

img

选择好要生成那个软件的工程后,点击右上角"GENERATE CODE"

相关小工程代码示例看如下文章

3.关键代码讲解与应用

1.生成初始化函数代码(手动添加了注释)

static void MX_GPIO_Init(void) 
{ 
  GPIO_InitTypeDef GPIO_InitStruct = {0}; 
 
  /* GPIO Ports Clock Enable */ 
  __HAL_RCC_GPIOC_CLK_ENABLE(); //使能GPIOC时钟,外部时钟输入使用PC14 PC15 
  __HAL_RCC_GPIOH_CLK_ENABLE(); //使能GPIOH时钟,因为按键使用PH3 外部时钟输入使用PH0 PH1 
  __HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOB时钟,因为LED使用PB0 PB1 
  __HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟,因为调试下载接口使用的PA13 PA14 
 
  /*Configure GPIO pin Output Level */ 
 HAL_GPIO_WritePin(GPIOB, LED1_Pin|LED0_Pin, GPIO_PIN_SET);//LED1,LED0配置相同,可以同时配置 
															//配置为初始电平高电平 
  /*Configure GPIO pin : KEY0_Pin */  //对按键进行GPIO初始化配置 
  GPIO_InitStruct.Pin = KEY0_Pin;//main.h中有#define KEY0_Pin GPIO_PIN_3 对应PH3的3 
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;//模式为输入模式 
  GPIO_InitStruct.Pull = GPIO_PULLUP;//内部电阻上拉 
  HAL_GPIO_Init(KEY0_GPIO_Port, &GPIO_InitStruct);//根据上述内容初始化 
 
  /*Configure GPIO pins : LED1_Pin LED0_Pin */  
    //LED1,LED0配置相同,可以同时配置 
 
  GPIO_InitStruct.Pin = LED1_Pin|LED0_Pin;//这里配置两个LED,也就是GPIO的输出 
    //main.h中有#define LED0_Pin GPIO_PIN_1, #define LED1_Pin GPIO_PIN_0 对应PB1 PB0的1和0 
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//模式为推挽输出 
  GPIO_InitStruct.Pull = GPIO_PULLUP;//内部电阻上拉 
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;//输出速度为低速 
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//根据上述内容初始化 
 
}

2.相关函数的应用

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:19:00  更:2021-09-06 11:21:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:07:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计