四旋翼无人机从0到1的实现(十七)无人机外设驱动→LED

Author:家有仙妻谢掌柜
Date:2021/2/18

今年会更新一个系列,小四轴无人机从功能设计→思维导图→原理图设计→PCBLayout→焊接PCB→程序代码的编写→整机调试一系列,以此记录自己的成长历程!
这个小四轴无人机是大学时期学习制作的,加上现在工作学习对嵌入式的理解更加深入,因此想要重新梳理一下小四轴,之后在此基础上实现大四轴的飞控设计,这些都将在工作之余完成!

//小四轴无人机设计,有LED灯提示 

#include "led.h"

/*******************************************************************************
 * fuction	all_led_on
 * brief	四个LED全亮
 * param	无
 * return	无
 *******************************************************************************/ 
void all_led_on(void)
{
    
    
	LED_LEFT_FRONT_ON;
	LED_RIGHT_FRONT_ON;
	LED_LEFT_BACK_ON;
	LED_RIGHT_BACK_ON;
}
/*******************************************************************************
 * fuction	all_led_off
 * brief	四个LED全不亮
 * param	无
 * return	无
 *******************************************************************************/ 
void all_led_off(void)
{
    
    
	LED_LEFT_FRONT_OFF;
	LED_RIGHT_FRONT_OFF;
	LED_LEFT_BACK_OFF;
	LED_RIGHT_BACK_OFF;
}
/*******************************************************************************
 * fuction	front_led_toggle
 * brief	前面两个闪烁
 * param	无
 * return	无
 *******************************************************************************/ 
void front_led_toggle(void)
{
    
    
	LED_LEFT_FRONT_TOGGLE;
	LED_RIGHT_FRONT_TOGGLE ;
	LED_LEFT_BACK_OFF;
	LED_RIGHT_BACK_OFF;
}
/*******************************************************************************
 * fuction	back_led_toggle
 * brief	后面两个闪烁
 * param	无
 * return	无
 *******************************************************************************/ 
void back_led_toggle(void)
{
    
    
	LED_LEFT_BACK_TOGGLE;
	LED_RIGHT_BACK_TOGGLE;
	LED_LEFT_FRONT_OFF;
	LED_RIGHT_FRONT_OFF;
}
/*******************************************************************************
 * fuction	led_bling
 * brief	人机交互LED显示
 * param	无
 * return	无
 *******************************************************************************/ 
void led_bling(void)
{
    
    
	/* 1 丢信号的时候显示 2 欠压的时候显示  3 六轴模式 4 翻跟头的模式下显示*/ 
	//1 丢信号的时候显示 绿灯200毫秒闪烁
	static uint8_t LED_cnt = 0;
	LED_cnt++;
	if(lost_signal_flag==1)
	{
    
    
		if(LED_cnt%40==0)
		front_led_toggle();
	}
	/*欠压的时候显示 红灯200闪毫秒烁*/
	else if(bat_low_flag==1)
	{
    
    
		if(LED_cnt%40==0)
		back_led_toggle();
	}
	/*六轴模式显示 绿灯500闪毫秒烁*/
	else if(Fly_Mode == FLYMODE_6AXIE)
	{
    
    
		if(LED_cnt%100==0)
		front_led_toggle();
	}
	/*翻跟头的模式显示 红灯500闪毫秒烁*/
	else 
	{
    
    
		if(LED_cnt%100==0)
		back_led_toggle();
	}
	if(LED_cnt>100)
	LED_cnt = 0;
}
#ifndef _LED_H__
#define _LED_H__

#include "board_define.h"
#include "var_global.h"
                                                                   //GPIOC->BRR复位
//void Led_gpio_init(void);
#define LED_LEFT_FRONT_OFF                  GPIOC->BSRR  = GPIO_Pin_15          //PC15 置位
#define LED_RIGHT_FRONT_OFF  				GPIOB->BSRR  = GPIO_Pin_4 
#define LED_LEFT_BACK_OFF    				GPIOB->BSRR  = GPIO_Pin_2 
#define LED_RIGHT_BACK_OFF 					GPIOD->BSRR  = GPIO_Pin_8 

#define LED_LEFT_FRONT_ON  					GPIOC->BRR  = GPIO_Pin_15 
#define LED_RIGHT_FRONT_ON  				GPIOB->BRR  = GPIO_Pin_4 
#define LED_LEFT_BACK_ON    				GPIOB->BRR  = GPIO_Pin_2 
#define LED_RIGHT_BACK_ON 					GPIOD->BRR  = GPIO_Pin_8

#define LED_LEFT_FRONT_TOGGLE 				GPIOC->ODR  ^= GPIO_Pin_15 
#define LED_RIGHT_FRONT_TOGGLE  			GPIOB->ODR  ^= GPIO_Pin_4 
#define LED_LEFT_BACK_TOGGLE    			GPIOB->ODR  ^= GPIO_Pin_2 
#define LED_RIGHT_BACK_TOGGLE 				GPIOD->ODR  ^= GPIO_Pin_8

void all_led_on(void);
void all_led_off(void);
void front_led_toggle(void);
void back_led_toggle(void);
void led_bling(void);

#endif

猜你喜欢

转载自blog.csdn.net/FutureStudio1994/article/details/113854732