STM32cube 读取其他芯片 开漏输出引脚 的电平

有时候我们需要测量一个芯片的状态引脚,读取他的电平。

该引脚是开漏引脚。

首先要明白推挽和开漏的原理:

K1、K2相当于口线内接的MOS管,有开关两个状态。

推挽输出:口线内接上下两只MOS管,K1打开、K2闭合时相当于口线接VCC,输出高电平(输出电流)。K1闭合、K2打开时相当于口线接GND,输出低电平(吸入电流)。从电流角度看,口线即可输出电流也可吸入电流,形如一推一拉,所以名曰“推挽”。

开漏输出:口线内只接了一只MOS管,口线外部可通过上拉电阻接VCC。K1闭合时,口线接地,输出低电平。K1打开时,口线通过上拉电阻拉到高电平。此种形式,口线内接的MOS管漏极只通过口线将其引出,内部不接任何元件,是开路的,所以名曰“开漏”。

单片机的低电平就是地,“地”是整个电路里电位的最低点,口线接地其输出的就是低电平了。

然后这时候我们来配置STM32 的引脚

因为当该芯片的开漏引脚使能时候,该引脚内部开关闭合,引脚被拉低,所以当32的引脚检测到低电平时侯,该芯片的引脚使能。

我们的代码就可以这样写:

uint8_t pg= 0;
if (!HAL_GPIO_ReadPin(PG_GPIO_Port, PG_Pin)){
    	pg = 1;
    }

当检测到这个开楼引脚使能时候,变量pg就会置1.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以帮你介绍一下如何在STM32CubeIDE中使用按键输入和输出驱动LED灯的方法。 1. 首先,你需要将按键和LED灯连接到开发板上。假设你将按键连接到了PA0引脚,LED灯连接到了PC13引脚。 2. 在STM32CubeIDE中创建一个新项目,选择对应的MCU型号和工程类型。 3. 在Project Manager中打开Pinout & Configuration选项卡,将PA0设置为GPIO_Input模式,PC13设置为GPIO_Output模式。 4. 在Project Manager中打开Core选项卡,将时钟设置为合适的频率,例如使用HSI时钟,设置为16MHz。 5. 在Project Manager中打开MDK-ARM选项卡,选择需要的编译器。 6. 在工程中添加一个main.c文件,并添加GPIO库文件的头文件。 ``` #include "stm32f4xx_hal.h" ``` 7. 在main函数中初始化GPIO引脚。 ``` int main(void) { /* 初始化HAL库 */ HAL_Init(); /* 初始化GPIO引脚 */ __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA0为输入模式 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* 配置PC13为输出模式 */ GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* 循环读取按键状态,控制LED灯 */ while (1) { /* 读取PA0引脚状态 */ if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) { /* PA0引脚为高电平,点亮LED灯 */ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); } else { /* PA0引脚为低电平,熄灭LED灯 */ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); } } } ``` 8. 编译并下载程序到开发板上。 9. 按下PA0引脚,LED灯会点亮;松开PA0引脚,LED灯会熄灭。 以上就是在STM32CubeIDE中使用按键输入和输出驱动LED灯的方法。你可以根据自己的需求修改代码,例如使用外部中断控制LED灯等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉禾天成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值