关于Dshot源代码分享
前段时间发了个小实验的视频,是照着网上大神分享的代码写了个用Dshot协议驱动电调的小玩意儿,可能有人会需要这段代码,先分享出来,要有错误的地方大佬们多多指正,我是一个小菜鸡。
第一部分,包含一些头文件,其中debug.h头文件里面包含有延时函数,如果你们没有延时函数,需要自己加上其他头文件。

第二部分,Dshot初始化函数,具体步骤和目的在图中都有标注,使用TIM2产生PWM信号,加上DMA控制PWM的占空比,从而达到发送数据的目的。

第三部分,Dshot复位函数,这个没啥好说的,清空数组,关掉计时器,把IO口拉低。

第四部分,Dshot数组生成函数,首先对输入函数的速度数据添加回传位组成12位数据,将数据拆分成3组进行异或得到CRC校验位,最后共同组成16位信号数据,随后对每一位进行判断,生成对应占空比,储存到数组中,这里图省事直接给回传位置0。

第五部分,Dshot开启函数,具体步骤见注释,在此函数调用时,DMA会将占空比数组中的每一位一次一次的转运到计时器的CCR寄存器中,从而实现使用pwm传输Dshot信号的功能。

以上就是Dshot.c的全部代码,使用前在Dshot.h中声明一下,主函数首先调用初始化函数Dshot_Init以及Dshot_OFF,在循环中重复调用Dshot_ESCData以及Dshot_On,设置速度即可控制电机旋转。
第一次分享代码,有不对的地方希望大佬指点指点。
参考文章
https://blog.csdn.net/outbreakrmb/article/details/126218010
https://www.cnblogs.com/Sky-seeker/p/14358676.html
https://blog.csdn.net/qq_35081072/article/details/107747996
https://blog.csdn.net/qq_44810226/article/details/119150963