STM32-01 推挽输出-点亮LED

本文以STM32中点亮LED为例,解读推挽输出的原理

推挽输出介绍

所谓的推挽输出,就是通过控制输出控制模块,打开或者关闭P-MOS或者N-MOS。

─ 推挽模式下:输出寄存器上的'0'激活N-MOS,而输出寄存器上的'1'将激活P-MOS。

当P-MOS被打开,N-MOS被关闭时,输出端整体呈现灌电流模式,可以理解为此时的输出端口为GND负极。

当P-MOS被关闭,N-MOS打开时,输出端口保持一个Vdd的高电平状态,可用于对外部的负载供电。

推挽输出和开漏输出的区别

─ 开漏模式:输出寄存器上的'0'激活N-MOS,而输出寄存器上的'1'将端口置于高阻状态(P-MOS从不被激活)。

─ 推挽模式:输出寄存器上的'0'激活N-MOS,而输出寄存器上的'1'将激活P-MOS。

可以看到从输出状态上,开漏输出模式只能输出低电平和高阻态,若需输出高电平必须通过外部上拉电阻实现。

而推挽输出不需要外接上拉电阻,既可以输出高电平又可以输出低电平。

推挽输出实例

硬件配置

MCU:STM32F103C8T6

LED

硬件接口

MCU:GPIOA1以推挽形式为LED进行供电

软件思路

1.打开GPIOA所在的时钟线

2.配置GPIOA为推挽输出

3.Site/Resite GPIO口的Pin状态

#代码实现

复制代码
#include "stm32f10x.h"                  // Device header
int main(void)
{
	//Enable GPIOA Clock Bus
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; 
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	//Init GPIO confige
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	GPIO_ResetBits(GPIOA, GPIO_Pin_1);

	while (1)
	{
		
	}
}
相关推荐
十月的皮皮1 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
开发笔记-阿牛2 小时前
解析一款有意思的产品||CK6159A语音芯片设计的儿童专注力训练机-舒尔特玩具
stm32·单片机·嵌入式硬件·音频
残影飞雪3 小时前
ESP32-C5下载烧录固件失败报错的原因
单片机·嵌入式硬件
搞全栈小苏4 小时前
SIMetrix_simplis8.4安装教程——附安装包
stm32·单片机·嵌入式硬件·电力电子
qq_573967825 小时前
STM32控制器
stm32·单片机·嵌入式硬件
某林2126 小时前
履带小车底盘stm32F103RCT6开发
人工智能·stm32·单片机·嵌入式硬件·架构·人机交互·ros2
sramdram6 小时前
低功耗MCU微控制器在动态血糖仪(CGM)中的应用方案
单片机·嵌入式硬件·mcu·mcu微控制器
Dlrb12116 小时前
ARM--IMX6ULL的SDK学习,BSP开发工程管理,以及链接脚本与Makefile的编写
单片机·嵌入式硬件·arm·sdk·链接脚本·i.mx6ull·cortex-a7
李永奉7 小时前
杰理可视化SDK开发-配置ANC主动降噪功能模块教程
单片机·嵌入式硬件·物联网
云泽8087 小时前
嵌入式环境搭建(一):Keil MDK5 安装流程及 DFP 器件包配置实战
嵌入式硬件·keil5·keil mdk5·dfp器件包配置