STM32F103(库函数)——点亮LED并且使用软件延时实现led闪烁

2019-05-22来源: eefocus关键字:STM32F103  库函数  点亮LED  软件延时  led闪烁

当我们学过51单片机之后就知道在51单片机中点亮一个LED很简单一句代码就可以实现。只需要将LED所连接的IO口拉低就可以点亮LED。


但是在STM32中,点亮LED确实比51要麻烦很多。


一样,在STM32中点亮LED也是属于基本的IO口的使用,所以每当我们需要点亮LED时就需要正确配置IO口。STM32的IO口相比51单片机而言要复杂很多,所以用起来也很困难。

下面就是点亮LED的代码,并且使用延时实现LED闪烁。


main.c


#include "stm32f10x.h"

#include "led.h"

#include "delay.h"

#include "sys.h"

 

int main(void)

{

LED_Init();

delay_init();

while(1)

{

// GPIO_SetBits(GPIOB,GPIO_Pin_5);        //点亮LED0

// GPIO_ResetBits(GPIOE,GPIO_Pin_5);      //关闭LED1 

// delay_ms(500);                         //软件延时500ms

// GPIO_SetBits(GPIOE,GPIO_Pin_5);        //点亮LED1

// GPIO_ResetBits(GPIOB,GPIO_Pin_5);      //关闭LED0

// delay_ms(500);                         //软件延时500ms

LED0 = 1;        //关闭LED0

LED1 = 0;        //点亮LED1

delay_ms(500);   //软件延时500ms

LED0 = 0;        //点亮LED0

LED1 = 1;        //关闭LED1

delay_ms(500);   //软件延时500ms

}

}

led.c


#include "led.h"

 

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);//设能PB和PE口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0->PB5 端口配置

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数设定参数配置GPIO

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1->PE5 端口配置

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_Init(GPIOE, &GPIO_InitStructure); //根据参数设定参数配置GPIO

}

led.h


#ifndef __LED_H__

#define __LED_H__

 

#include "sys.h"

 

#define LED0 PBout(5)

#define LED1 PEout(5)

 

void LED_Init(void);

 

 

#endif


关键字:STM32F103  库函数  点亮LED  软件延时  led闪烁

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic462574.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F103(库函数)——按键检测
下一篇:stm32(库函数)——新建基于固件库的MDK5工程模板

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

的程序员选择了库开发。现在STM32F1系列和STM32F4系列各有一套自己的函数库,但是它们大部分是兼容的,F1和F4之间的程序移植,只需要小修改即可。而如果要移植用寄存器写的程序,我只想说:"呵呵"。用库来进行开发,市场已有定论,用户群说明了一切,但对于STM32的学习仍然有人认为用寄存器好,而且汇编不是还没退出大学教材么?认为这种方法直观,能够了解到是配置了哪些寄存器,怎样配置寄存器。事实上,库函数的底层实现恰恰是直接配置寄存器方式的最佳例子,它代替我们完成了寄存器配置的工作,而想深入了解芯片是如何工作的话,只要直接查看库函数的最底层实现就能理解,相信你会为它严谨、优美的实现方式而陶醉,要想修炼C语言,就从
发表于 2019-09-18
第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

第9章 初识STM32固件库—零死角玩转STM32-F429系列

到STM32标准库的地方都要包含这个头文件。CMSIS文件夹中的主要内容就是这样,接下来我们看看STM32F4xx_StdPeriph_Driver文件夹。3.    STM32F10x_StdPeriph_Driver文件夹文件目录:LibrariesSTM32F4xx_StdPeriph_Driver进入libraries目录下的STM32F4xx_StdPeriph_Driver文件夹,见图 94。图 94 外设驱动STM32F4xx_StdPeriph_Driver文件夹下有inc(include的缩写)跟src(source的简写)这两个文件夹,这里的文件属于CMSIS之外的的、芯片片上外设部分。src里面
发表于 2019-09-18
第9章 初识STM32固件库—零死角玩转STM32-F429系列

第14章 启动文件详解—零死角玩转STM32-F429系列

本章参考资料《STM32F4xx 中文参考手册》第十章-中断和事件:表 46. STM32F42xxx 和 STM32F43xxx 的向量表;MDK中的帮助手册—ARM Development Tools:用来查询ARM的汇编指令和编译器相关的指令。14.1 启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针SP=_initial_sp2、初始化PC指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界14.2 查找ARM汇编指令在讲解启动代码的时候,会涉及到ARM的汇编指令
发表于 2019-09-18
第14章 启动文件详解—零死角玩转STM32-F429系列

第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列

, RCC_MCO1Div_1); 我们初始化MCO引脚之后,可以直接调用库函数RCC_MCOxConfig()来选择MCO时钟来源,同时还可以分频,这两个参数的取值参考库函数说明即可。主函数在主函数中,可以调用HSE_SetSysClock()或者HSI_SetSysClock()这两个函数把系统时钟设置成各种常用的时钟,然后通过MCO引脚监控,或者通过LED闪烁的快慢体验不同的系统时钟对同一个软件延时函数的影响。1 int main(void) 2 {  3  // 程序来到main函数之前,启动文件:statup_stm32f10x_hd.s已经调用  4 
发表于 2019-09-18
第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列

第16章 STM32中断应用概览—零死角玩转STM32-F429系列

本章参考资料《STM32F4xx 中文参考手册》第十章-中断和事件、《 ARM Cortex™-M4F 技术参考手册》-4.3 章节:NVIC和4.4章节:SCB—4.4.5的AIRCR。STM32中断非常强大,每个外设都可以产生中断,所以中断的讲解放在哪一个外设里面去讲都不合适,这里单独抽出一章来做一个总结性的介绍,这样在其他章节涉及到中断部分的知识我们就不用费很大的篇幅去讲解,只要示意性带过即可。本章如无特别说明,异常就是中断,中断就是异常,请不要刻意钻牛角尖较劲。16.1 异常类型F429在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。其中系统异常有10个,外部中断有91个。除了个别异常的优先级被定死外
发表于 2019-09-18
第16章 STM32中断应用概览—零死角玩转STM32-F429系列

第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。上一章节我们已经详细介绍了NVIC,对STM32F4xx中断管理系统有个全局的了解,我们这章的内容是NVIC的实例应用,也是STM32F4xx控制器非常重要的一个资源。学习本章时,配合《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。特别说明,本书内容是以STM32F42xxx系列控制器资源讲解。17.1 EXTI简介外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现
发表于 2019-09-18
第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved