11-固件库点亮LED

固件库点亮LED

前提条件 建立一个固件库工程模板可以参考以下博客
https://blog.youkuaiyun.com/cainaiolin/article/details/52012786

硬件基础
在这里插入图片描述
我的开发板上面一共有三个led灯 我选择点亮PB5这个灯

话不多说看代码:新建一个文件名字为“bsp_led.h”
BoardSupport Packet 的缩写(板级支持包) 多用在用户自己定义的文件中

#ifndef __BSP_LED_H
#define __BSP_LED_H

//R红色的灯
/*-----LED 灯的 GPIO 端口、GPIO 引脚号以及 GPIO 端口时钟----*/
#define 	LED1_GPIO_PORT		GPIOB
#define		LED1_GPIO_CLK		RCC_APB2Periph_GPIOB
#define 	LED1_GPIO_PIN		GPIO_Pin_5

/*直接操作寄存器的方法控制IO*/
#define		digitalHi(p,i)		{p->BSRR = i;}	//输出高电平
#define		digitalLo(p,i)		{p->BRR = i;}	//输出为低电平
#define 	digitalToggle(p,i)	{p->ODR ^= i;}	//输出为反正状态 异或

/*定义控制IO的宏*/
#define LED1_TOGGLE			digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_OFF			digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_ON				digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)


/*LED_GPIO初始化函数*/
void LED_GPIO_Config(void)
{
	/*定义一个GPIO_InitTypeDef类型的结构体*/
	GPIO_InitTypeDef GPIO_InitStructure;
	
	/*开启LED的相关GPIO外设时钟*/
	RCC_APB2PeriphClockCmd(LED1_GPIO_CLK,ENABLE);
	
	/*选择需要控制的GPIO引脚*/
	GPIO_InitStructure.GPIO_Pin  = LED1_GPIO_PIN;
	
	/*设置引脚的模式为通用推挽输出模式*/
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	
	/*设置输出的速率为50MHz*/
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	
	 /*选择需要控制的引脚*/
	GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;
	
	/*调用GPIO_Init函数初始化GPIO端口*/
	GPIO_Init(LED1_GPIO_PORT,&GPIO_InitStructure);
	
	/*关闭所有灯*/
	GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
	
}

#endif

LED_GPIO_Config 初始化函数步骤解读
1.定义一个GPIO_InitTypeDef类型的变量,这个结构体中包含三个变量uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode分别设置管脚,输出速率,模式选择。
2.开启相关的GPIO口的时钟
3.对GPIO_InitTypeDef类型的的变量进行赋值
4.调用GPIO_Init函数对GPIO端口进行初始化
5.LED默认是关闭的

主函数:main

#include"stm32f10x.h"
#include"bsp_led.h"
/*
	*@brief 	Main program
	*@param 	None
	*@retval  	Nane
*/

int main(void)
{
	LED_GPIO_Config();
	while(1)
	{
		LED1_ON	;
	}
}


如果你想使用固件库点亮LED灯,你可以按照以下步骤进行操作: 1. 首先,创建一个新的文件夹,用于存放LED灯的控制代码。例如,你可以创建一个名为"led"的文件夹。 2. 在"led"文件夹中创建两个文件,分别是"led.c"和"led.h"。这些文件将包含LED灯的控制函数。 3. 打开"led.h"文件,并在其中定义LED灯的引脚。根据引用中的说明,你可以将PF6、PF7和PF8引脚分别与RGB灯的R灯、G灯和B灯连接起来。 4. 在"led.h"文件中声明LED灯控制函数。根据你的需求,你可以创建函数来控制单个LED灯的亮灭,或者同时控制多个LED灯来混合成不同的颜色。 5. 打开"led.c"文件,并实现LED灯控制函数。根据引用中的示例代码,你可以使用GPIO库来配置LED灯的引脚,并在main函数中测试LED灯的亮灭。 6. 在main函数中,你可以使用控制函数来点亮或熄灭LED灯。根据你的需求,你可以选择控制单个LED灯,或者轮流显示不同颜色的灯。 以下是使用固件库点亮LED灯的示例代码: #include "./led/led.h" int main(void) { /* LED 端口初始化 */ LED_GPIO_Config(); /* 控制LED灯 */ while (1) { LED1( ON ); // 点亮LED1 Delay(0xFFFFFF); LED1( OFF ); // 熄灭LED1 Delay(0xFFFFFF); // 其他LED灯的控制... // 轮流显示不同颜色的LEDLED_RED; Delay(0xFFFFFF); LED_GREEN; Delay(0xFFFFFF); LED_BLUE; Delay(0xFFFFFF); // 其他颜色的控制... LED_RGBOFF; Delay(0xFFFFFF); } } void Delay(__IO uint32_t nCount) { for (; nCount != 0; nCount--); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值