STM32之LED闪烁与流水灯

一、GPIO简介

单片机型号:STM32F103C8T6
通用输入输出口有:GPIOA-GPIOG

二、GPIO基本结构

在这里插入图片描述

GPIOA有十六个端口,分别为PA0--PA15,以此类推
想要使用GPIO,需要开启APB2的RCC外设时钟(RCC相当于使能),以及进行GPIO的初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

三、GPIO模式

在这里插入图片描述

GPIO初始化,需要端口模式、端口号、端口速度,端口模式有八种模式,四输入四输出
配置好之后就可以正常使用了
GPIO_InitTypeDef GPIO_InitStruct;  				//GPIO结构体定义
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;		//GPIO配置为推挽输出模式
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;			//GPIO配置为PA0端口输出
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; 	//GPIO的PA0口速度50Mhz(不影响)
	
GPIO_Init(GPIOA, &GPIO_InitStruct);				//GPIO配置完成,传入进行初始化

四、LED闪烁

int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	while(1)
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);  	//对PA0口进行位清零,置为低电平
		Delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);		//对PA0口进行位置一,置为高电平
		Delay_ms(500);
	}

}

五、LED流水灯

int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA, &GPIO_InitStruct);

	while(1)
	{
		GPIO_Write(GPIOA,~0x0001);  //对GPIOA十六个口进行写操作,点亮PA0口的LED
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0002);	//点亮PA1口的LED
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0004);  //点亮PA2口的LED,以此类推
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0008);
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0010);
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0020);
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0040);
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0080);
		Delay_ms(500);
	}

}

六、总结

首先要开启RCC外设时钟进行使能,使GPIO工作,再进行GPIO口的初始化配置,即可正常使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值