Beecore Lite Silverware 有刷飞控.源码解读1
36元空心杯飞控Beecore Lite(Silverware固件)
先看驱动,后看逻辑的写作。
先把蜂鸣器的开关函数封装成宏,然后也可以使用条件宏做开关
1.宏函数会在编译预处理时展开,只占编译时间,函数调用则会占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以执行相对宏会较慢。
2.在函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。
3.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。
4.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可。宏定义时,字符串可以是任何类型的数据。
其实我觉得宏函数在嵌入式里面,至少在这里就是为了代码的美观罢了。性能是有些浪费的。
清楚位置,就是控制的这个BRR的寄存器
库函数的每一个都是要校验传入的函数的
这里是设置蜂鸣器的IO
对蜂鸣器的IO进行设置
注意设置的顺序是按照IO结构体的构造顺序
库函数初始化的样子
return 1 我不是很懂
我们看看是什么
都是接收协议里面的值
SBUS
看这些变量的地方
先不急,这里
因为蜂鸣器和编程的IO是复用,这里就要设置一个延时的时间
一开始的设置通道的个数
定义在此
这个时间更新的函数写到对应的驱动再说
把更新的时间写到time里面
接着进来就是对应不同状态的声音频率
低的信号发射水平或者低电量,这个延时时间是浮点数的大数
如果上面的情况都没有出现,就是低电量什么的.开始准备启动蜂鸣器,就是叫的值现在已经装载了。
如果成功的初始化会返回一个1,这里就空了
这个是蜂鸣器声音的计算
下面就是反复的使用宏封装的函数乱叫。
如果上面的常数没有装载成功,那就直接关了蜂鸣器
最后把函数封装一下
这个简单的实现,没有什么好说的。
今天坐上特斯拉了!
坐过很多的电车了,还是感觉特斯拉的车可能真的是做出了不一样的感觉
哈哈哈,这个是我除了吹特斯拉的哨子以外目前唯一和特斯拉的交集辽~
https://blog.csdn.net/Monster_ii/article/details/77089651