欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > stm32点灯Hal库

stm32点灯Hal库

2025/4/19 17:29:31 来源:https://blog.csdn.net/weixin_66732375/article/details/144676131  浏览:    关键词:stm32点灯Hal库

 硬件连接

  • 将一个LED的正极(阳极)连接到STM32的一个GPIO引脚(例如PA5),并将LED的负极(阴极)连接到GND,同时串联一个合适的电阻(例如220欧姆)以限制电流。

完整代码

/********************************************************************************* @file    bsp_led.c* @author  fire* @version V1.0* @date    2017-xx-xx* @brief   led应用函数接口******************************************************************************* @attention** 实验平台:野火 STM32 F103 开发板  * 论坛    :http://www.firebbs.cn* 淘宝    :http://firestm32.taobao.com********************************************************************************/#include "./led/bsp_led.h"   /*** @brief  初始化控制LED的IO* @param  无* @retval 无*/
void LED_GPIO_Config(void)
{				/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef  GPIO_InitStruct;/*开启LED相关的GPIO外设时钟*/LED1_GPIO_CLK_ENABLE();
//    LED2_GPIO_CLK_ENABLE();
//    LED3_GPIO_CLK_ENABLE();
//    LED4_GPIO_CLK_ENABLE();/*选择要控制的GPIO引脚*/															   GPIO_InitStruct.Pin = LED1_PIN;	/*设置引脚的输出类型为推挽输出*/GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;  /*设置引脚为上拉模式*/GPIO_InitStruct.Pull  = GPIO_PULLUP;/*设置引脚速率为高速 */   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;/*调用库函数,使用上面配置的GPIO_InitStructure初始化GPIO*/HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);	//    /*选择要控制的GPIO引脚*/															   
//    GPIO_InitStruct.Pin = LED2_PIN;	
//    HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);	//    /*选择要控制的GPIO引脚*/															   
//    GPIO_InitStruct.Pin = LED3_PIN;	
//    HAL_GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStruct);
//    
//    /*选择要控制的GPIO引脚*/															   
//    GPIO_InitStruct.Pin = LED4_PIN;	
//    HAL_GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStruct);/*关闭RGB灯*/LED_ALLOFF;
}
/*********************************************END OF FILE**********************/
#ifndef __LED_H
#define	__LED_H#include "stm32f1xx.h"//引脚定义
/*******************************************************/
//LED1
#define LED1_PIN                  GPIO_PIN_13               
#define LED1_GPIO_PORT            GPIOC                   
#define LED1_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOC_CLK_ENABLE()//LED2
#define LED2_PIN                  GPIO_PIN_9
#define LED2_GPIO_PORT            GPIOA                     
#define LED2_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOA_CLK_ENABLE()//LED3
#define LED3_PIN                  GPIO_PIN_10              
#define LED3_GPIO_PORT            GPIOA                      
#define LED3_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOA_CLK_ENABLE()//LED4
#define LED4_PIN                  GPIO_PIN_14              
#define LED4_GPIO_PORT            GPIOE                       
#define LED4_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOE_CLK_ENABLE()/************************************************************//** 控制LED灯亮灭的宏,* LED低电平亮,设置ON=0,OFF=1* 若LED高电平亮,把宏设置成ON=1 ,OFF=0 即可*/
//#define ON  GPIO_PIN_RESET
//#define OFF GPIO_PIN_SET/* 带参宏,可以像内联函数一样使用 */
#define LED1(a)	HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_PIN,a)#define LED2(a)	HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_PIN,a)#define LED3(a)	HAL_GPIO_WritePin(LED3_GPIO_PORT,LED3_PIN,a)#define LED4(a)	HAL_GPIO_WritePin(LED4_GPIO_PORT,LED4_PIN,a)/* 直接操作寄存器的方法控制IO */
#define	digitalHi(p,i)			{p->BSRR=i;}			  //设置为高电平		
#define digitalLo(p,i)			{p->BSRR=(uint32_t)i << 16;}				//输出低电平
#define digitalToggle(p,i)		{p->ODR ^=i;}			//输出反转状态/* 定义控制IO的宏 */
#define LED1_TOGGLE		digitalToggle(LED1_GPIO_PORT,LED1_PIN)
#define LED1_OFF		digitalHi(LED1_GPIO_PORT,LED1_PIN)
#define LED1_ON			digitalLo(LED1_GPIO_PORT,LED1_PIN)#define LED2_TOGGLE		digitalToggle(LED2_GPIO_PORT,LED2_PIN)
#define LED2_OFF		digitalHi(LED2_GPIO_PORT,LED2_PIN)
#define LED2_ON			digitalLo(LED2_GPIO_PORT,LED2_PIN)#define LED3_TOGGLE		digitalToggle(LED3_GPIO_PORT,LED3_PIN)
#define LED3_OFF		digitalHi(LED3_GPIO_PORT,LED3_PIN)
#define LED3_ON			digitalLo(LED3_GPIO_PORT,LED3_PIN)#define LED4_TOGGLE		digitalToggle(LED4_GPIO_PORT,LED4_PIN)
#define LED4_OFF		digitalHi(LED4_GPIO_PORT,LED4_PIN)
#define LED4_ON			digitalLo(LED4_GPIO_PORT,LED4_PIN)//黑(全部关闭)
#define LED_ALLOFF	\LED1_OFF;\
//					LED2_OFF;\
//          LED3_OFF;\
//					LED4_OFFvoid LED_GPIO_Config(void);#endif /* __LED_H */

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词