笑死,第三篇了都,好久都没有写这么多了,第三篇是我最近看的一个STC官网的小项目,一个无人机的项目,感觉代码写的很好,这里简单的分析一下。
即没有GPS信号或GPS信号不佳的环境,飞控系统仅保持无人机姿态的平稳,无人机无法精准定位而呈现明显飘移。
通过一定的操纵,使飞机姿态运动符合飞行员意愿的可控飞行。 百度百科
差不多就是这样
电机的顺序
电源是单片机和电调
这就是连上了
留的排针接口
这个是接收机的输入和电调的PWM输出
IMU
这个是电调控制输出
PPM捕获
航灯
单独一个脚
还有蜂鸣器
预留了一路串口
完整Github上面见
组装样子
这些功能在源码里面都有
实现的源码其实很少,就是几个文件而已,这里就不用keli了,太丑了
大概主文件里面的函数就是这些了
一般来说读源码的时候就是两个路子,一个是一步一步的跳转,还有就是看完驱动再跑主的。
我以前是第一种,但是感觉效率有点低,这里看的方法就是先驱动吧。
我们说51的时候都是在说着老土,过气什么的,但是你玩的精通又有几个,其次在STC里面也有了库的概念,这里就带你看一下。
这个就是所谓的库文件
SFR定义一些位置
这谢是老版的51没有的,后面加的
因为本身这个东西都没有很难,所以在封装库的时候也就是使用了宏定义了。名字是很好的,做到了见名字其意。
带着注释很好的
IO的使能
还记得经典的定时器不?
51单片机定时器详细全解.上
51单片机定时器详细全解.下
快来补课呀!
不管怎么说,库开发是深入人心的,封装只是行为而已,我很很欣赏STC的精神的。
就直面自己物美价廉这个事情
离谱
反正友商是学不来
PWMGO是PWM初始化
这个是配置的文件
延时函数内部使用的是时钟频率
这个是STC定义的数据类型
PWM的输出都是强推挽模式
数据指针
PWM时钟选择
PWM的分频器
这个是数据手册
先配置寄存器,然后就是中断寄存位,异常检测,控制寄存器也打开
软件置0
这个是对单独的通道设置
安排
ADC是测量电压来的
初始化
中断标志
这个就是计算值
最重要的MPU6050传感器
里面的一些寄存器的位置
初始化MPU6050
里面的延时信号
这个是IIC的数据定义引脚
IIC的写入
一对儿信号
接收和回应
发送和接收
很简单了
这个就是起始信号了
下篇是主函数了。
代码语言:javascript复制http://www.stcmcudata.com/