STM32 GPIO输出实现led闪烁


1.mdk安装

直接跟着b站江协科技操作的,传送门:STM32入门教程-软件安装


2.连接电路

选择的是GPIO输出中的推挽输出,推挽输出就是可以输出高低电频,直接驱动小功耗器件。这里采用的是低电频点亮的方式。
根据这张图连接面包板上的电路。
在这里插入图片描述
在这里插入图片描述

这里我用的不是STLINK 用的是DAPmini 所以在keil5里面的debug里要选择CMSIS-DAP Debugger
在这里插入图片描述


3.创建工程

跟着b站江协科技创建工程,传送门:STM32入门教程-新建工程

建好之后左边的工程目录就是这样:
(比较繁琐,之后创建工程可直接复制目录)
在这里插入图片描述

点开魔法棒的这一页添加了 USE_STDPERIPH_DRIVER 和 文件路径,
如图:
在这里插入图片描述


4.编写代码

1.原理

操作stm32的GPIO的三个步骤:

  • 使用RCC开启GPIO的时钟
  • 使用GPIO_Init函数初始化GPIO
  • 使用输出或输入的函数控制GPIO口

总共涉及了RCC和GPIO两个外设

RCC是时钟控制,这里我们用到APB2这个外设时钟控制函数

GPIO_Init函数,用结构体的参数来初始化GPIO口,用法是先定义一个结构体,给它们赋值,然后再调用这个函数,这个函数就会自动把外设的各个参数配置好。

GPIO_InitTypeDef定义的结构体中有三个参数,分别用于:

  • GPIO_Mode:选择输出方式
  • GPIO_Pin:选择引脚
  • GPIO_Speed:选择输出速度

GPIO有将指定端口设置为高低电频的函数:

  • GPIO_SetBits函数,将指定端口设置为高电频
  • GPIO_ResetBits函数,将指定端口设置为低电频
  • GPIO_WriteBit函数,比上面两个多一个参数,可直接指定高电频或低电频

2.编译并下载到最小系统板上

根据以上原理编写代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h" 						//延时器
int main(void)
	{
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
		
		GPIO_InitTypeDef GPIO_InitStructure;
		GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;	//选择输出方式 这里是推挽输出 
														//推挽输出就是可以输出高低电频,直接驱动小功耗器件
		GPIO_InitStructure.GPIO_Pin= GPIO_Pin_0;		//选择引脚 使用的是GPIO外设的0号引脚 A0 所以选GPIO_Pin_0
		GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//选的50MHz的输出速度
		
		GPIO_Init(GPIOA,&GPIO_InitStructure);//把GPIO_InitStructure放在GPIO_Init函数的第二个参数上,初始化就完成了
		
		while(1){
			
			GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);			
			Delay_ms(1000);		
			GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);		
			Delay_ms(1000);
		
		}
	}

5.运行结果

运行结果如下:可以看到led灯以1秒一次的频率闪烁。
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值