STM32_HAL 点灯

点灯代码

本次代码基于野火的代码,使用STM32cubeMX生成,移植野火写的代码,也参考了小蜜蜂笔记(这是很好的入门)

下面是移植的代码

.c文件没有啥,主要是.h文件,一般都宏定义好的

 

这是.c文件

#include "bsp_led_HAL.h"

/**
* @brief 自由函数
* @param
* @retval None
*/
void Free_function(void)
{



}

 

这是.h文件

#ifndef _BSP_LED_HAL_H_
#define _BSP_LED_HAL_H_

 

#include "main.h"
/* 定义LED连接的GPIO端口, 用户只需要修改下面的代码即可改变控制的LED引脚 */
// R-红色
#define LED1_GPIO_PORT       GPIOB /* GPIO端口 */
#define LED1_GPIO_CLK          RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED1_GPIO_PIN           GPIO_PIN_5 /* 连接到SCL时钟线的GPIO */

// G-绿色
#define LED2_GPIO_PORT        GPIOB /* GPIO端口 */
#define LED2_GPIO_CLK          RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED2_GPIO_PIN           GPIO_PIN_0 /* 连接到SCL时钟线的GPIO */

// B-蓝色
#define LED3_GPIO_PORT        GPIOB /* GPIO端口 */
#define LED3_GPIO_CLK           RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED3_GPIO_PIN            GPIO_PIN_1 /* 连接到SCL时钟线的GPIO */

 


/** the macro definition to trigger the led on or off
* 1 - off
*0 - on
*/
#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(LED2_GPIO_PORT,LED3_PIN,a)

//
#define LED1_TOGGLE HAL_GPIO_TogglePin(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_OFF HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_GPIO_PIN,GPIO_PIN_SET)
#define LED1_ON HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_GPIO_PIN,GPIO_PIN_RESET)

#define LED2_TOGGLE HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_GPIO_PIN)
#define LED2_OFF HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_GPIO_PIN,GPIO_PIN_SET)
#define LED2_ON HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_GPIO_PIN,GPIO_PIN_RESET)

#define LED3_TOGGLE HAL_GPIO_TogglePin(LED3_GPIO_PORT,LED3_GPIO_PIN)
#define LED3_OFF HAL_GPIO_WritePin(LED3_GPIO_PORT,LED3_GPIO_PIN,GPIO_PIN_SET)
#define LED3_ON HAL_GPIO_WritePin(LED3_GPIO_PORT,LED3_GPIO_PIN,GPIO_PIN_RESET)


/* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */

//红
#define LED_RED LED1_ON;LED2_OFF;LED3_OFF

//绿
#define LED_GREEN LED1_OFF;LED2_ON;LED3_OFF

//蓝
#define LED_BLUE LED1_OFF;LED2_OFF;LED3_ON

//黄(红+绿)
#define LED_YELLOW LED1_ON;LED2_ON;LED3_OFF

//紫(红+蓝)
#define LED_PURPLE LED1_ON;LED2_OFF;LED3_ON

//青(绿+蓝)
#define LED_CYAN LED1_OFF;LED2_ON;LED3_ON

//白(红+绿+蓝)
#define LED_WHITE LED1_ON;LED2_ON;LED3_ON

//黑(全部关闭)
#define LED_RGBOFF LED1_OFF;LED2_OFF;LED3_OFF


extern void Free_function(void);

#endif

 

至于STM32CubeMX配置,参考小蜜蜂笔记与野火的就行了

posted @ 2022-05-09 23:33  孤走  阅读(74)  评论(0编辑  收藏  举报