使用库函数点亮第一个LED灯

80 篇文章 59 订阅
订阅专栏

 

目录

一、LED模块硬件电路

二、GPIO库函数介绍

2.1、GPIO外设的库文件

2.2、GPIO常用库函数

2.2.1、初始化函数

2.2.2、设置管脚输出电平函数

2.2.3、读取管脚输入电平函数

2.2.4、使能GPIO时钟函数

三、GPIO初始化步骤

3.1、使能对应的GPIO端口时钟

3.2、初始化GPIO

四、使用库函数编写点亮LED程序

4.1、LED初始化

4.2、点亮D1指示灯


一、LED模块硬件电路

  • 相同网络标号表示它们是连接在一起的,因此 DS0、DS1 发光二极管阴极是连接在 STM32 的 PB5、PE5 管脚上。如果要使 DS0 指示灯亮,只需要控制 PB5 管脚输出低电平,如果要使 DS0 指示灯灭,只需控制 PB5 输出高电平。
  • 两个相同的网络标号就表示这两处在电气上是相连的,即标有相同网络标号的两点,相当于是用一根导线连起来的。
  • 网络标号一般用在较复杂的电路图中,连线较多,或两个需要相连的元件距离较远时,用导线相连感觉很乱,就常用相同的网络标号来标注两个连接点,使电路图显得简洁。

 

二、GPIO库函数介绍

2.1、GPIO外设的库文件

stm32f10x_gpio.c

stm32f10x_gpio.h

2.2、GPIO常用库函数

2.2.1、初始化函数

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

功能:初始化一个或多个IO口(同一组端口)的工作模式、输出速度即GPIO的2个配置寄存器。

初始化范例

GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量

GPIO_InitStructure.GPIO_Pin_0;       // 选择你要设置的IO口

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;//设置传输速率

GPIO_Init(GPIOC,&GPIO_InitStructure);/*初始化GPIO*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; /*一次对多个管脚进行初始化,前提必须是它们的配置模式需一样*/

2.2.2、设置管脚输出电平函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);

功能:设置某个IO口为高电平(可同时设置同一端口的多个IO)。底层是通过配置BSRR寄存器。

void GPIO_ResetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_pin);

功能:设置某个IO口为低电平(可同时设置同一端口的多个IO)。底层 是通过配置BSRR寄存器。

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

功能:设置端口管脚输出电平,很少使用。

2.2.3、读取管脚输入电平函数

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

功能:读取端口中的某个管脚输入电平。底层是通过读取IDR寄存器。

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

功能:读取某组端口的输入电平。底层是通过读取IDR寄存器。

2.2.4、使能GPIO时钟函数

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

不同的外设调用的时钟使能函数可能不一样

使能GPIOC端口时钟:

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

三、GPIO初始化步骤

3.1、使能对应的GPIO端口时钟

#define LED1_PORT_RCC  RCC_APB2Periph_GPIOB 
#define LED2_PORT_RCC  RCC_APB2Periph_GPIOE

3.2、初始化GPIO

四、使用库函数编写点亮LED程序

4.1、LED初始化

4.2、点亮D1指示灯

五、软件

5.1、led.h文件

该文件主要是对 led.c 源文件的函数声明以及端口管脚的宏定义,方便其他文件调用该函数。在该头文件中可以看到使用了一个定义头文件的结构

#ifndef _led_H
#define _led_H

#endif

功能:防止头文件被重复包含,避免引起编译错误。

在头文件的开头,使用“ #ifndef”关键字,判断标号“ _led_H”是否被定义,若没有被定义,则从“ #ifndef”至“ #endif”关键字之间的内容都有效,即这个头文件若被其它文件“ #include”,它就会被包含到其该文件中,且头文件中紧接着使用“ #define”关键字定义上面判断的标号“ _led_H”。当这个头文件被同一个文件第二次“ #include”包含的时候,由于有了第一次包含中的“ #define _led_H”定义,这时再判断“ #ifndef _led_H”,判断的结果就是假了,从“ #ifndef”至“ #endif”之间的内容都无效,从而防止了同一个头文件被包含多次,编译时就不会出现“ redefine(重复定义)”的错误了。

 

 

#ifndef _led_H  /*防止头文件被重复包含  意为:如果没有定义*/
#define _led_H  /*那么就在此处定义*/

#include "stm32f10x.h"
/*使用宏定义 LED1_PORT_RCC、LED1_PIN 和 LED1_PORT存放在led.h头文件中
可以增强代码的移植性;即使后续需要换其他端口,只需简单修改这几个宏就可以完成对
LED 的控制。*/
#define LED1_PORT   GPIOB                      // DS0端口
#define LED1_PIN    GPIO_Pin_5                 // DS0的引脚
#define LED1_PORT_RCC  RCC_APB2Periph_GPIOB    // DS0的端口时钟
#define LED2_PORT    GPIOE                     // DS1的端口
#define LED2_PIN     GPIO_Pin_5                // DS1的引脚 
#define LED2_PORT_RCC  RCC_APB2Periph_GPIOE    //DS1的端口时钟

void LED_Init(void);                           // 

#endif      // 结束

5.2、led.c

#include "led.h"
void LED_Init()
{
    GPIO_InitTypeDef GPIO_InitStructure;  // 给结构体GPIO_InitTypeDef 取个别名GPIO_InitStructure
	  RCC_APB2PeriphClockCmd(LED1_PORT_RCC|LED2_PORT_RCC,ENABLE);// 开启DS0或DS1的时钟
	
  	GPIO_InitStructure.GPIO_Pin=LED1_PIN;   //  端口配置
	  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;  // 推挽输出模式配置
	  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  //输出速度配置
	  GPIO_Init(LED1_PORT,&GPIO_InitStructure);  	// 初始化GPIO_Init()
	  GPIO_SetBits(LED1_PORT,LED1_PIN);// 将LED端口拉高,熄灭所有LED
	
	  GPIO_InitStructure.GPIO_Pin=LED2_PIN; //选择你要设置的 IO 口
    GPIO_Init(LED2_PORT,&GPIO_InitStructure); /* 初始化 GPIO */
    GPIO_SetBits(LED2_PORT,LED2_PIN); //将 LED 端口拉高,熄灭所有 LED
}

函数中的 LED1_PORT_RCC、LED1_PIN 和 LED1_PORT 等是我们定义的宏,其存放在 led.h 头文件内。LED1_PORT_RCC 定义的是 DS0 端口时钟(如RCC_APB2Periph_GPIOB),LED1_PIN 定义的是 DS0 的引脚(如 GPIO_Pin_5),LED1_PORT 定义的是 DS0 的端口(如 GPIOB)。这样定义宏的好处是有效提高了程序的移植性,即使后续需要换其他端口,只需简单修改这几个宏就可以完成对LED 的控制。

5.3、main.c

#include "stm32f10x.h"
#include "led.h"
int main()
{
LED_Init();
	GPIO_ResetBits(LED1_PORT,LED1_PIN);
	while(1)
	{
	}
}

 

STM32学习和实践笔记(3): 使用库函数点亮LED后的学习总结
qq_37191547的博客
03-29 318
二,使用库函数来编程相当方便高效,要学会查找对应库函数的声明和定义并阅读了解之。具体方法就是在对应不明白处右键,go to definition是跳到该函数的定义处,也就是这个函数的c源文件处。而go to reference 则是跳到这个函数的声明处,也就是声明这个函数的h文件处。这样在修改和移值时,只需要修改头文件这一处地方就可以了,其余所有使用到的地方就会全部更改。4)为了方便程序和修改和移植,要习惯性地将可能变动的引脚通过宏声明定义在头文件处。
[1]用STM32点亮第一个LED-用库函数实现
爪爪x的博客
07-23 8761
点亮第一个LED 基本知识
stm32按键轮循点
luoyir1997的博客
04-26 762
一、实验描述及工程文件清单 1.实验描述: 按键-引脚连接:KEY1-PC5  KEY2-PC2  KEY3-PC3 LED-引脚连接:LED1-PB5  LED2-PD6  LED3-PD 用扫描的方式查询是否有按键按下:key1按下时,LED1状态取反;key2按下时,LED2状态取反;KEY3按下                           时,LED3状态取反。 3.库文...
库函数点亮第一个LED
LOT
03-04 2981
一想到你在关注我就忍不住有点紧张 ★入学手册★ 上学的机会是受人控制的,但读书与实践才是获取知识的主要课堂,在这个博主这里学习的权力只掌握在你自己手中,是任何人都剥夺不了的。让学习成为一种生活的习惯,这比任何名牌大学的校徽重要得多! ——一个嵌入式开发者 基本知识 点亮STM32的第一个LED需要的基础知识非常多,在写代码前要先建立正确的工程模板,还需要...
使用固件库函数点亮LED
qq_36535414的博客
04-11 1475
使用固件库函数点亮LED 新建固件库工程里面都有哪些文件: 1-汇编编写的启动文件 startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对用C库函数_main最终去到C的世界 2-时钟配置文件 system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M。 3-外设相关的 stm32f10x.h:实现了内核之外的外设的寄存器映射 xxx:GPIO、USRAT、I2C、SPI、FSMC stm32f10x_xx.c:外设的驱动函数库
stm32学习之路---使用库函数点亮一个LED
weixin_43554366的博客
12-23 572
目标:理解并运用库函数点亮一个LED 1.LED模块硬件电路 捕获.PNG 在led相应端口输入低电平点亮 2.GPIO库函数介绍 (1)GPIO外设的库文件: stm32f10x_gpio.c -----外设源码 stm32f10x_gpio.h -----外设头文件 <1>初始化函数 void GPIO_Init(GPIO_T...
STM32笔记2-使用库函数点亮LED
panjinliang066333的博客
09-02 5203
头文件中定义的变量不存在重复声明或定义。
STM32的点亮一个LED(STM32神舟IV号-库函数版)程序,亲测能用
11-25
"STM32的点亮一个LED(STM32神舟IV号-库函数版)程序"是针对STM32初学者的一个经典实践项目,旨在帮助理解微控制器的基本操作和C语言编程。 首先,我们要了解STM32是如何控制LED的。STM32的GPIO(通用输入/输出)...
4-使用库函数点亮一个LED_main.c;_key.c;led.c_
10-02
在本项目中,我们主要探讨的是如何在Keil uVision5开发环境中,使用STM32F407微控制器的库函数来实现一个简单的LED控制程序,通过按键进行开关操作。这个项目涉及到的主要文件有`main.c`、`key.c`和`led.c`,这些...
8个led循环点亮程序c语言
07-14
首先,将变量i初始化为0xfe,二进制表示为***,这意味着第一个LED点亮,其他LED熄灭。然后通过i--来递减二进制数,依次点亮下一个LED。当i递减到0时,所有的LED都被点亮,此时将i重新赋值为0xfe,循环开始...
STM32F103C8T6核心板测试代码(点库函数&寄存器双版本
04-30
STM32F103C8T6核心板测试代码(点库函数&寄存器双版本 可以作为工程模板使用
stm32f102 点亮一个LED例程
05-05
stm32f102 点亮一个LED例程,
STC32G库函数版本的第一个例程,点亮led
09-17
在这个例程中,我们将深入探讨如何使用STC32G的库函数来控制LED灭,这是学习嵌入式系统开发的基本步骤之一。 首先,我们需要了解STC32G的GPIO(通用输入输出)接口。在STC32G单片机中,GPIO端口用于与外部...
使用库函数点亮LED
GHost_7的博客
05-20 898
使用库函数点亮LED 1.资料使用 复制一份资料中的程序 打开Template.uvprojx 删除多余的.C文件 仅保留:1.stm32f4xx_rcc.c //任何工程都不能删掉 ​ 2.stm32f4xx_gpio.c ​ 3.stm32f4xx_ustart.c //串口的 ​ 4.misc.c 2.程序书写规范 在Template.uvprojx所在的文件中新建APP文件 在APP文件中新建LED文件夹 3.新建初始化引脚 新建led.h #i
13、使用库函数点亮第一个LED
weixin_30639719的博客
03-08 309
13、使用库函数点亮第一个LED 1.LED模块硬件电路2.GPIO库函数介绍3.GPIO初始化步骤4.使用库函数编写点亮LED程序 1.LED模块硬件电路 2.GPIO库函数介绍 (1)GPIO外设的库文件: stm32f10x_gpio.c stm32f10x_gpio.h (2)GPIO常用库...
【STM32】标准库与HAL库对照学习教程三--使用库函数配置GPIO点亮LED
修成真的博客
11-10 9000
【STM32】标准库与HAL库对照学习教程三--使用库函数配置GPIO点亮LED一、前言二、准备工作三、LED硬件电路四、使用标准库工程点亮LED1、GPIO初始化一般步骤2、GPIO标准库函数介绍3、使用库函数编写程序使LED闪烁操作4、实验效果五、使用cubemx生成HAL库工程点亮LED1、cubemx配置生成工程2、HAL库控制函数介绍3、编写使LED闪烁的程序4、实验效果 一、前言 本章主要介绍如何使用标准库工程与cubemx配置工程使LED闪烁,可以直接点击目录看自己想要看的内容,文
STM32第一次学习——使用库函数点亮LED
王某的博客
08-25 549
使用库函数点亮LED led.h #ifndef _LED_H #define _LED_H #include "stm32f10x.h" #define LED_PORT_RCC RCC_APB2Periph_GPIOC #define LED_PIN GPIO_Pin_0 #define LED_PORT GPIOC void LED_Init(void); #endif led.c #include "led.h" void LED_Init() { GPIO_InitT
STM32入门(三)库函数
m0_52854915的博客
04-07 2033
前面我们完成了对寄存器点方法的操作,可见查手册是很麻烦的,所以我们这节来学习库函数。 1.APB2外设时钟函数void RCC_APB2PeriphClockCmd(); 学习库函数我们可以右键点击选择"GO to Define..." 即可跳转到库函数的内容介绍@brief,重点查看库函数的参数@param内容填什么 下图可知我们要填的两个参数分别是RCC_APB2Periph_GPIOC,ENABLE (即使能开启GPIOC的时钟) 然后调用库函数: RCC_APB2Peri
STM32学习记录——点仪式(库函数
frenzied的博客
11-16 469
编程方法: 库函数编程:直接调用函数操作 (简单易学) 寄存器编程:直接对寄存器就行操作 (上手难度大,但利于理解工作原理) GPIO库中的重要函数 注意操作IO口之前必须使能对应时钟位 RCC_APB2PeriphClockCmd(对应IO口参数,使能or非使能) 如 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能 P
嵌入式使用库函数同时点亮两个
最新发布
09-22
// 第一个LED连接到数字引脚1 int led2 = D2; // 第二个LED连接到数字引脚2 void setup() { pinMode(led1, OUTPUT); // 初始化led1为输出 pinMode(led2, OUTPUT); // 初始化led2为输出 } ``` 2. **点亮泡**:...
写文章

热门文章

  • GPIO简介 88052
  • keil5 之error 56: cannot open file 39010
  • 用C语言创建文件并写入内容 38962
  • 共阴/共阳数码管 ----- 学习笔记 25149
  • STM32最小系统 23493

分类专栏

  • 硬件记录 1篇
  • 基于stm32f103c8t6的智能小车 5篇
  • stm32精简版
  • 文学
  • 汽车电子 1篇
  • 单片机从新开始 10篇
  • 单片机项目 2篇
  • 32位单片机记录 80篇
  • c语言 27篇
  • 编译软件报错 6篇
  • android控制智能小车 7篇
  • 单片机 27篇
  • 模拟电路与数字电路 16篇
  • C语言 CASE 1篇
  • RT-Thread操作系统学习记录 10篇
  • Linux 29篇
  • 1篇
  • Java 129篇
  • 操作系统 4篇
  • 自考 16篇

最新评论

  • keil5 之error 56: cannot open file

    翼codm: 我也不行表情包表情包表情包

  • printf重定向

    洒去犹能化碧涛: 我的是发送有一小部分乱码

  • LED 流水灯与闪烁

    旭日初扬: typedef unsigned char u8;

  • printf重定向

    旭日初扬: 你试试不就知道了么

  • printf重定向

    你在看什么啊: 有没有老哥告诉一下,“int fputc(int ch,FILE *p) //函数默认的,在使用printf函数时自动调用”这里我把函数名称改成foutc1成么?会影响函数的正常使用么?

大家在看

  • 基于SpringBoot 的社团管理系统视频
  • 初始面向对象(上) 332
  • 走迷宫01
  • Golang笔记_day09 913
  • 苹果手机摔了一下开不了机怎么办?4个实用解决方法分享

最新文章

  • PADS 操作记录
  • 国民技术与stm32 ADC采集
  • PADS9.5使用记录
2024年2篇
2023年11篇
2022年39篇
2021年62篇
2020年139篇
2019年176篇
2018年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭日初扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家江苏特色玻璃钢雕塑优势北京商场美陈灯饰画价格工艺品玻璃钢雕塑厂家商场美陈是什么样子西安玻璃钢雕塑小品定制福建仿铜玻璃钢雕塑图片泉州玻璃钢仿铜雕塑定制浙江特色商场美陈生产厂家东莞鼎湖玻璃钢人物雕塑阿坝玻璃钢花盆厂家邢台玻璃钢仿真水果雕塑厂家武汉景区玻璃钢雕塑制作上海中庭商场美陈费用河南商业商场美陈销售美陈玻璃钢雕塑费用玻璃钢雕塑价格制作厂玻璃钢熊本熊雕塑滨州小品系列玻璃钢雕塑定做江西佛像玻璃钢雕塑设计江西道路景观玻璃钢花盆揭阳玻璃钢动物雕塑服务电话家居商场气球美陈玻璃钢海洋雕塑平台哪个好开业商场美陈多少钱四川仿铜玻璃钢雕塑制作肇庆玻璃钢动物雕塑台州玻璃钢仿铜雕塑定做玻璃钢房地产鹿雕塑价格潜江玻璃钢座椅雕塑重庆多彩玻璃钢雕塑批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化