您的位置:首页 > 教育 > 培训 > STM32学习(2)-GPIO输出

STM32学习(2)-GPIO输出

2024/10/14 10:12:24 来源:https://blog.csdn.net/LHYYUYG/article/details/140565928  浏览:    关键词:STM32学习(2)-GPIO输出

GPIO输出

  • 2.1 GPIO输出
    • 1.GPIO简介
    • 2.GPIO基本结构
    • 3.GPIO位结构
    • 4.GPIO模式
    • 5.硬件电路
  • 2.2LED闪烁&LED流水灯&蜂鸣器
    • 1.LED闪烁
      • main函数代码
    • 2.LED流水灯
    • 3.蜂鸣器

2.1 GPIO输出

1.GPIO简介

GPIO(General Purpose Input Output)通用输入输出口
可配置为8种输入输出模式
引脚电平:0V~3.3V,部分引脚可容忍5V
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

2.GPIO基本结构

在这里插入图片描述

3.GPIO位结构

在这里插入图片描述

4.GPIO模式

通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式
在这里插入图片描述
浮空\上拉\下拉输入
在这里插入图片描述
模拟输入,用于ADC转换
在这里插入图片描述
开漏\推挽输出
在这里插入图片描述
复用开漏\推挽输出
在这里插入图片描述

5.硬件电路

在这里插入图片描述

2.2LED闪烁&LED流水灯&蜂鸣器

1.LED闪烁

main函数代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);Delay_ms(500);GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);Delay_ms(500);}
}

2.LED流水灯

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_Write(GPIOA,~0x0001);//0000 0000 0000 0001Delay_ms(500);GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010Delay_ms(500);GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100Delay_ms(500);GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000Delay_ms(500);GPIO_Write(GPIOA,~0x0010);//0000 0000 0001 0000Delay_ms(500);GPIO_Write(GPIOA,~0x0020);//0000 0000 0010 0000Delay_ms(500);GPIO_Write(GPIOA,~0x0040);//0000 0000 0100 0000Delay_ms(500);GPIO_Write(GPIOA,~0x0080);//0000 0000 1000 0000Delay_ms(500);}
}

3.蜂鸣器

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_12);Delay_ms(500);GPIO_SetBits(GPIOB,GPIO_Pin_12);Delay_ms(500);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com