3、stm32GPIO控制

空降文章列表

回顾

  • 经过《2、准备工程模板》的学习,相信你已经准备好了stm32工程模板,接下来,让我们进入正式的编码学习。

本章实验材料

  • 面包板、杜邦线若干、直插led。

你能学会什么

  • 控制stm32 GPIO,通过软延时,实现led灯交替闪烁。

GPIO控制篇

  • 如果您还未建立工程,请参考文章
  • 首先,我们将template文件夹复制一份,更改为GPIO控制。
    在这里插入图片描述
  • 代码很简单,我们先不进行文件划分,直接在main.c中编码。
#include "stm32f10x.h"

/*
GPIO操作,是学习一款MCU最基本的知识。
stm32 MCU与51单片机在IO控制上有很大的区别。
在51单片机中,我们可以直接对某一引脚赋值,
而在stm32中,我们需要更多的配置,比如开启时钟,配置输入输出模式等。
*/


//延时函数,不要想定时器,先老老实实用土办法i--
void simple_delay(){
	unsigned int i = 4800000;
	while(i--);
}

int main()
{
	GPIO_InitTypeDef GPIO_InitStruct;//配置结构体变量
	/*
	GPIO_InitTypeDef:结构体,其中含有和GPIO的配置相关的变量
	*/
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;//设置对应的引脚
	/*
	GPIO_Pin可取值有:
		GPIO_Pin_0-15:0-15引脚,可用或运算选中多个引脚,如GPIO_Pin_0|GPIO_Pin_5
		GPIO_Pin_All:选中所有引脚
	*/
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置引脚模式
	/*
	GPIO_Mode可取值有:
		GPIO_Mode_AIN:模拟输入
		GPIO_Mode_IN_FLOATING:浮空输入
		GPIO_Mode_IPD:下拉输入
		GPIO_Mode_IPU:上拉输入
		GPIO_Mode_Out_OD:开漏输出
		GPIO_Mode_Out_PP:推挽输出
		GPIO_Mode_AF_OD:复用开漏输出
		GPIO_Mode_AF_PP:复用推挽输出
	*/
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;//设置管脚速率
	/*
	GPIO_Speed可取的值有:
		GPIO_Speed_10MHz
		GPIO_Speed_2MHz
		GPIO_Speed_50MHz
	*/
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//需要先开启时钟,再初始化
	//!--所谓的时钟,在入门阶段你可以理解为人的心跳,没有心跳,什么都不起作用。
	//! --至于上面这句为什么是这么写,你先不用管,随着学习的深入再慢慢理解。
	
	//! --记住一句:想要干活,就要有心跳,就要开时钟!
	
	
	/*
	--我们前面对于GPIO_InitStruct的操作,可以理解为拿了一个本子,写上我们想要配置成什么样,
	--那么接下来调用GPIO_Init接口,让固件库拿着我们写好的本子(GPIO_InitStruct),去操作stm32的寄存器
	--实现我们想要的配置功能。
	*/
	
	/*
	GPIO_Init:
	参数1:端口,PORT
	参数2:GPIO配置结构体指针
	*/
	GPIO_Init(GPIOA,&GPIO_InitStruct);


    while(1){
		GPIO_SetBits(GPIOA,GPIO_Pin_5);//让PA5输出高电平
		simple_delay();
		GPIO_ResetBits(GPIOA,GPIO_Pin_5);//让PA5输出低电平
		simple_delay();
    }
    return 0;
}
  • 对于上面的程序,在PA5引脚串联一个led和限流电阻后接地,编译和烧录程序,你会看到led闪烁效果。

  • 对于GPIO的输入输出的模式,你不必困惑,在入门阶段,我大部分人是控制led灯或者蜂鸣器,你只需要将它设置为推挽输出模式即可,对于其它模式,你会在后续的学习中逐步了解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值