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