使用STM32f103点亮led灯——库函数版本

本文章是结合我这一年的学习与应用,总结出来的经验与知识(主要为了应用),欢迎读者们学习和指导。

前言

资料 :
链接:https://pan.baidu.com/s/1pr57NSXFmax06kqPHLQGBQ
提取码:air1

为了保证单片机的使用寿命,ARM公司生产的STM32单片机引脚默认状态是不开启的,所以使用任何功能都要先使能其引脚,才能使用其功能。

1. STM32f103原理图(借鉴野火指南者)

在这里插入图片描述

如图所示,此单片机有3个不同颜色的LED灯,分别为LEDG(PB0),LEDB(PB1),LEDR(PB5)。
R-RED,B-BLUE,G-GREED对应三种不同的颜色。

如下图所示:
在这里插入图片描述

PB0通过R24与LEDG(发光二极管)相连,再连接3.3v电压。
此电路为串联,要想点亮LEDG,就需要其两端有电势差,因此,需要使能PB引脚并且给其低于3.3v的电压,或者高于3.3v的电压,又因为发光二极管单向导通(头大的那端到头小的那端),所以PB0就得给其低电平,简单化的就直接调用stm32f1官方库函数。

如下代码所示:

//此函数第一个参数对应不同的引脚(GPIOA-GPIOB-GPIOx)
//	   第二个参数为引脚号(GPIO_Pin0-GPIO_Pin15)
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));//选中IS_GPIO_ALL_PERIPH,再右键Go To Definition of ...............(省略号),可以查看所有能填写的参数
  assert_param(IS_GPIO_PIN(GPIO_Pin));//选中IS_GPIO_PIN,再右键Go To Definition of ...............(省略号),可以查看所有能填写的参数
  GPIOx->BRR = GPIO_Pin;//为寄存器操作,新手可不做深究
}

要使用此函数就先得先将引脚的功能对应设置

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;//GPIO结构体初始化(将结构体指针重新换个名字,避免冲突)
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //开启LED对应引脚的时钟
 	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;	 //LED对应引脚开启
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //将模式设置为推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //设置引脚传输速度为50mhz
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //GPIO初始化,第一个参数为对应引脚,第二个参数为结构体指针,选中GPIO_Init再右键Go To Definition of .......查询此结构的参数,过程与上一次相同
}

如果要点亮LED灯,可将此代码复制到main.c文件中,如下图所示:

#include "stm32f10x.h"


int main(void)
{
	
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);	 
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOE, &GPIO_InitStructure);						
	while(1)//死循环(while之内的函数一直循环执行)
	{
		GPIO_ResetBits(GPIOB , GPIO_Pin_0);	//PB0设置为低电平,LED亮	
	}
	
}

萌新求关注,文章会持续更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值