STM32学习(2)-GPIO输出

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 0001
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0010);//0000 0000 0001 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0020);//0000 0000 0010 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0040);//0000 0000 0100 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0080);//0000 0000 1000 0000
		Delay_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);
	}
}

相关推荐

最近更新

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

    2024-07-20 14:00:03       76 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 14:00:03       81 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 14:00:03       65 阅读
  4. Python语言-面向对象

    2024-07-20 14:00:03       76 阅读

热门阅读

  1. Vue中Key的作用

    2024-07-20 14:00:03       18 阅读
  2. VMware 虚拟机 ping 不通原因排查

    2024-07-20 14:00:03       23 阅读
  3. 数据响应式(Object.defineProperty和Proxy)

    2024-07-20 14:00:03       20 阅读
  4. 云计算的三种服务模式

    2024-07-20 14:00:03       23 阅读
  5. wps的xls文件,如何过滤掉空白没有数据的行

    2024-07-20 14:00:03       20 阅读
  6. Provider(5) - AdjustChannelsBufferProvider

    2024-07-20 14:00:03       18 阅读
  7. lua 游戏架构 之 SceneLoad场景加载(一)

    2024-07-20 14:00:03       22 阅读
  8. Thread类的基本用法

    2024-07-20 14:00:03       21 阅读
  9. C?C++?

    2024-07-20 14:00:03       21 阅读
  10. ArcGIS Pro SDK (九)几何 10 弧

    2024-07-20 14:00:03       18 阅读
  11. AB测试介绍

    2024-07-20 14:00:03       22 阅读