STM32-01 推挽输出-点亮LED

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

推挽输出介绍

在这里插GPIO入图片描述
所谓的推挽输出,就是通过控制输出控制模块,打开或者关闭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. stm32_f103c8led01

    2024-07-11 12:30:07       38 阅读
  2. stm32 裸机led

    2024-07-11 12:30:07       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 12:30:07       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 12:30:07       56 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 12:30:07       46 阅读
  4. Python语言-面向对象

    2024-07-11 12:30:07       57 阅读

热门阅读

  1. Linux 宝塔常用命令教程

    2024-07-11 12:30:07       18 阅读
  2. HDFS体系架构&文件写入/下载流程

    2024-07-11 12:30:07       22 阅读
  3. 企业微信群发限制的背后逻辑,一文读懂!

    2024-07-11 12:30:07       20 阅读
  4. Stable Diffusion与AI艺术:探索人工智能的创造力

    2024-07-11 12:30:07       23 阅读
  5. vue3 ts 不使用 if switch 来决定使用什么函数

    2024-07-11 12:30:07       17 阅读
  6. 拖动未来:WebKit 完美融合拖放API的交互艺术

    2024-07-11 12:30:07       20 阅读
  7. helm安装解决无授权问题

    2024-07-11 12:30:07       18 阅读
  8. php获取,昨,今,后天.... 本周,月,年...日期时间戳

    2024-07-11 12:30:07       22 阅读
  9. 大话C语言:第28篇 内存分配与释放

    2024-07-11 12:30:07       18 阅读
  10. MySQL 中删除重复的数据并只保留一条

    2024-07-11 12:30:07       18 阅读
  11. spring boot 3.2.x 使用CDS加速启动

    2024-07-11 12:30:07       22 阅读
  12. 37.深度学习中的梯度下降法及其实现

    2024-07-11 12:30:07       20 阅读
  13. Spring Boot与Spring MVC的区别和联系

    2024-07-11 12:30:07       22 阅读