本博客用来记录学习ATKflight固件的学习过程,本人萌新,大佬们可以参考参考。
本文默认已经了解FreeRTOS操作系统并且会简单的使用方法,如果读者没了解过,建议先看正点原子的FreeRTOS教程视频学习一下,毕竟ATKflight固件使用了操作系统,个人感觉使用带操作系统的工程更加接近于实际生活,建议大家多多尝试。
第一部分
LED驱动代码
咱先从简单的开始,先看懂LED灯的驱动代码。
代码位置:…\悟空四轴飞行器光盘\悟空四轴飞行器光盘资料包\3. 程序源\ATKflight\Firmware_F405 V1.2\src\drivers
在keil5中的位置:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821164716461.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODUxNTgw,size_16,color_FFFFFF,t_70)
我们先看led.h这个头文件,看看有什么函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821165515505.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODUxNTgw,size_16,color_FFFFFF,t_70)
可以看到有6个函数,我们逐一解析一下。
void ledInit(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821172258625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODUxNTgw,size_16,color_FFFFFF,t_70)
这个函数很简单,只是初始化了控制LED灯的IO引脚。
void warningLedON(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821172551978.png)
这个函数里有枚举类型的变量,在上面可以看到其定义
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821180435806.png)
从名字可以看出这个枚举变量是用来存储led灯的状态的,枚举成员解释如下:
WARNING_LED_OFF 熄灭状态
WARNING_LED_ON 点亮状态
WARNING_LED_FLASH 闪烁状态
了解完这个我们在看这个函数就可以知道它的作用是改变LED灯状态为熄灭。
void warningLedOFF(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821181307176.png)
和上一个函数差不多,作用为改变led灯状态为熄灭状态。
void warningLedFlash(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821181426696.png)
作用为改变led灯状态为熄灭状态;
void warningLedRefresh(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821181452794.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODUxNTgw,size_16,color_FFFFFF,t_70)
先看led.h里的宏定义
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019082118164280.png)
正点原子定义了三个宏分别用来控制led灯点亮,熄灭和闪烁。
所以我们可以 知道这个函数的作用是根据led灯的状态来控制led灯点亮,熄灭或者闪烁。
void warningLedUpdate(void);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190821181514924.png)
这个函数的作用是500ms更新一次led灯的状态。
蜂鸣器驱动代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)