单片机学习小组
登录
直播中
云达贞
7年用户
892经验值
私信
关注
请教大神GPIO-LED点灯实现的步骤有哪些
开启该帖子的消息推送
GPIO
点灯
LED库开发该怎样去实现呢?
请教大神GPIO-LED点灯实现的步骤有哪些?
回帖
(1)
李铭鑫
2022-2-28 14:39:42
引言
长话短说今天开始STM32的学习,本阶段的知识是基于ST公司的标准库函的开发:Keil.STM32F4xx_DFP.1.0.8.pack。
所需要的硬件设备:STM32F407ZET6开发板、 J-LINK下载器
软件:keil v5,
安装软件和工程搭建就不多说了,
工程模板
和
标准库
(Keil.STM32F4xx_DFP.1.0.8.pack)点击下载
下面就开始正文了,激动人心的点灯
LED库开发
LED库开发要添加库文件:stm32f4xx_gpio.c
理解LED灯原理图
LED0连接在PF9引脚
PF9输出VCC(1),灯灭
PF9输出GND(0),灯亮
点灯步骤
1、打开GPIOF组时钟,也叫做使能F组时钟(STM32当中外设的时钟默认不打开,降低功耗)
//使能GPIO F组时钟,
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
2、设置GPIOF9 引脚为输出模式 输出推挽 上拉 速度,并初始化GPIO
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
3、通过置位或者复位函数控制引脚电平
GPIO_SetBits(); //置位(1)
GPIO_ResetBits(); //复位(0)
GPIO_ToggleBits(); //电位翻转
GPIO_ReadInputDataBit(); //读取引脚输入电平
GPIO_ReadOutputDataBit();//读取引脚输出电平
GPIO-LED点灯实现例程
led.c
#include "led.h"
/*
引脚说明:
LED0 -- PF9
LED1 -- PF10
LED2 -- PE13
LED3 -- PE14
输出VCC(1),灯灭
输出GND(0),灯亮
*/
void Led_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIO F组时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIO E组时钟
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; //引脚10
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //引脚13
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStruct);
//熄灭所有LED灯
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_10);
GPIO_SetBits(GPIOE,GPIO_Pin_13);
GPIO_SetBits(GPIOE,GPIO_Pin_14);
}
mian.c
#include "stm32f4xx.h"
#include "led.h"
//粗延时
void delayms(int n)
{
int i, j;
for(i=0; i
for(j=0; j<40000; j++);
}
int main(void)
{
Led_Init();
while(1)
{
GPIO_ResetBits(GPIOF, GPIO_Pin_9);
delayms(500);
GPIO_SetBits(GPIOF, GPIO_Pin_9);
delayms(500);
GPIO_ResetBits(GPIOF, GPIO_Pin_10);
delayms(500);
GPIO_SetBits(GPIOF, GPIO_Pin_10);
delayms(500);
GPIO_ResetBits(GPIOE, GPIO_Pin_13);
delayms(500);
GPIO_SetBits(GPIOE, GPIO_Pin_13);
delayms(500);
GPIO_ResetBits(GPIOE, GPIO_Pin_14);
delayms(500);
GPIO_SetBits(GPIOE, GPIO_Pin_14);
delayms(500);
}
return 0;
}
引言
长话短说今天开始STM32的学习,本阶段的知识是基于ST公司的标准库函的开发:Keil.STM32F4xx_DFP.1.0.8.pack。
所需要的硬件设备:STM32F407ZET6开发板、 J-LINK下载器
软件:keil v5,
安装软件和工程搭建就不多说了,
工程模板
和
标准库
(Keil.STM32F4xx_DFP.1.0.8.pack)点击下载
下面就开始正文了,激动人心的点灯
LED库开发
LED库开发要添加库文件:stm32f4xx_gpio.c
理解LED灯原理图
LED0连接在PF9引脚
PF9输出VCC(1),灯灭
PF9输出GND(0),灯亮
点灯步骤
1、打开GPIOF组时钟,也叫做使能F组时钟(STM32当中外设的时钟默认不打开,降低功耗)
//使能GPIO F组时钟,
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
2、设置GPIOF9 引脚为输出模式 输出推挽 上拉 速度,并初始化GPIO
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
3、通过置位或者复位函数控制引脚电平
GPIO_SetBits(); //置位(1)
GPIO_ResetBits(); //复位(0)
GPIO_ToggleBits(); //电位翻转
GPIO_ReadInputDataBit(); //读取引脚输入电平
GPIO_ReadOutputDataBit();//读取引脚输出电平
GPIO-LED点灯实现例程
led.c
#include "led.h"
/*
引脚说明:
LED0 -- PF9
LED1 -- PF10
LED2 -- PE13
LED3 -- PE14
输出VCC(1),灯灭
输出GND(0),灯亮
*/
void Led_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIO F组时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIO E组时钟
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; //引脚10
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //引脚13
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14; //引脚9
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStruct);
//熄灭所有LED灯
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_10);
GPIO_SetBits(GPIOE,GPIO_Pin_13);
GPIO_SetBits(GPIOE,GPIO_Pin_14);
}
mian.c
#include "stm32f4xx.h"
#include "led.h"
//粗延时
void delayms(int n)
{
int i, j;
for(i=0; i
for(j=0; j<40000; j++);
}
int main(void)
{
Led_Init();
while(1)
{
GPIO_ResetBits(GPIOF, GPIO_Pin_9);
delayms(500);
GPIO_SetBits(GPIOF, GPIO_Pin_9);
delayms(500);
GPIO_ResetBits(GPIOF, GPIO_Pin_10);
delayms(500);
GPIO_SetBits(GPIOF, GPIO_Pin_10);
delayms(500);
GPIO_ResetBits(GPIOE, GPIO_Pin_13);
delayms(500);
GPIO_SetBits(GPIOE, GPIO_Pin_13);
delayms(500);
GPIO_ResetBits(GPIOE, GPIO_Pin_14);
delayms(500);
GPIO_SetBits(GPIOE, GPIO_Pin_14);
delayms(500);
}
return 0;
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
GPIO
点灯
如何去
实现
基于STM32单片机的
LED
点灯
设计呢
2021-11-25
1056
GPIO
点灯
,灯不亮
2020-03-31
1997
请问是否是开关决定
LED
亮暗?
2020-05-27
1538
如何利用ATmega16开发板
实现
LED
点灯
?
2021-11-02
1513
如何去
实现
一种基于keil5的MSP432E401Y
点灯
的设计
2021-08-27
2182
汇编中调用c函数中的子函数不能成功
点灯
2019-03-04
1103
如何去
实现
基于Keil5和STM32F103ZET6的
LED
点灯
设计
2021-11-29
924
分享一种基于RT_Thread Studio的
点灯
教程
2021-07-01
868
在RK3288平台上用
gpio
驱动点亮
led
灯的
步骤
有
哪些呢
2022-03-03
1033
如何去
实现
一种基于stm32的
点灯
设计
2021-10-08
1227
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分