main函数之后,systemTask第一个函数就是调用ledInit函数,所以可以先看下LED的实现,设置LED开关很简单,但是它引入了一种seq的方法,看上去就没那么简单了,首先还是先看下最底层开关LED程序的实现,LED.c:
#include <stdbool.h>
#include "stm32fxxx.h"
/*FreeRtos includes*/
#include "FreeRTOS.h"
#include "task.h"
#include "led.h"
#include "motors.h"
#ifdef STM32F4_DISCOVERY
static GPIO_TypeDef* led_port[] =
{
[LED_GREEN] = LED_GPIO_PORT,
[LED_RED] = LED_GPIO_PORT,
[LED_ORANGE] = LED_GPIO_PORT,
[LED_BLUE] = LED_GPIO_PORT,
};
static unsigned int led_pin[] =
{
[LED_GREEN] = LED_GPIO_GREEN,
[LED_RED] = LED_GPIO_RED,
[LED_ORANGE] = LED_GPIO_ORANGE,
[LED_BLUE] = LED_GPIO_BLUE,
};
static int led_polarity[] =
{
[LED_GREEN] = LED_POL_GRE
这篇博客探讨了crazyflie2.0固件中LED指示灯的实现,重点在于ledInit函数和seq方法。通过ledseqInit()函数,每个LED使用了一个1秒周期的软件定时器,并通过runLedseq回调函数进行控制。作者赞赏了这种巧妙的LED控制机制。
订阅专栏 解锁全文
1727

被折叠的 条评论
为什么被折叠?



