自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

棒棒的博客

做点笔记,取之CSDN,分享之CSDN

  • 博客(111)
  • 收藏
  • 关注

原创 MiniFly Firmware V1.1开源四轴代码分析六:stabilizer.c

stabilizerTask任务循环while(1)里有以下几个函数while(1) { vTaskDelayUntil(&lastWakeTime, MAIN_LOOP_DT); /*1ms周期延时*/ sensorsAcquire(&sensorData, tick); /*获取9轴和气压数据*///将数据存在结构体sensorData stateEstimator(&state, &sensorData, tick); /*四元数 欧拉

2020-10-23 14:13:10 972 6

原创 MiniFly V1.1开源四轴驱动代码分析八:旋转矩阵、控制分配矩阵等分析介绍

正点原子minifly的旋转矩阵,旋转方向,控制分配矩阵等介绍

2022-10-02 17:26:46 855 1

原创 小米平衡车plus放久后无法充电解决办法

半年没在家,电池没充电,回来后发现已经无法充电,看了网上一些“激活神器”的产品,有人说是智商税,我猜那个东西也没什么神奇的东西,像这款plus的充电线上3孔的,中间是信号线,两端是电源,猜测是当检测到平衡车电池的正常反馈,充电器才有电压输出,也就是有负载,有正常反馈,才有电压,我直接用电压表测量充电器的输出电压,是没电压的,其他好点的充电器,都有这个功能。我的解决方法:拔掉断开,用电压表测量一下,电池还有多少电压然后再插入,突然有反应了,扶它站起来然后用原装充电器充电...

2022-06-24 08:33:24 4570 1

原创 使用stm32c8t6和mpu6050制作一台穿越机

飞控部分:原理图:PCB:拿到嘉立创打印后:焊接:飞控需要单独5v供电,随便找了各降压模块,某宝大概3元钱,插入3s电池,调节旋钮,电源稳压到5v,再接入飞控。刷固件betaflight_3.2.5_NAZE,然后输入CLI命令,配置飞控。机身部分:全身采用PCB,每部分在10*10cm内,这样嘉立创免费打样,坏了也好免费更换各部分PCB 3D效果图:机臂*4中间底板*1两边的电池与飞控仓底板*2分层隔板*1横梁*4底部整体效果图:组装机架:闲鱼买了

2022-05-20 22:45:39 2536 7

原创 使用合宙air101系统板DIY一个小船

这个故事还得从在校园湖边散步说起……水面上遥控船吸引了我……材料清单:合宙air101小板:9.9元航模有刷电机:5元左右L298N电机驱动板:6元左右蓝牙模块:jdy33,7元左右航模3s电池或者5-12V充电宝工具:热熔胶枪,烙铁,焊锡,杜邦线,剪刀……功能:能实现手机控制小船前进后退及行驶速度;超过信号距离,蓝牙断开后,小船停止运动。硬件连接原理:代码:原理看注释--定义限幅函数function LimitThrust(T) if T>100 then

2022-05-20 11:39:40 2183

原创 合宙Air101+蓝牙模块,实现手机控制舵机转动

器材:蓝牙模块JDY33,合宙Air101接线:JDY33的串口接Air101的串口1,TX——U1_RX(PB_07),RX——U1_TX(PB_06)舵机信号线接Air101PWM0(PB_00)main.lua:-- LuaTools需要PROJECT和VERSION这两个信息PROJECT = 'helloworld'VERSION = '1.0.0'-- 引入必要的库文件(lua编写), 内部库不需要requirelocal sys = require 'sys'log.in

2022-05-05 10:44:00 1158

原创 lua基础语法

条件判断:if elselua:每个if就没i=10if i<10 then print("i<10 ")elseif i>10 then print("i>10 ")elseif i==10 then print("i=10 ")endc语言:#include <stdio.h>int main(){ int i=16; if(i>10) { printf("i>10"); }else i

2022-05-02 12:33:12 1861

原创 合宙Air101产生PWM驱动舵机

打开soc接口文档,查看与PWM功能的相关函数函数:pwm.open(channel, period, pulse, pnum, precision)选择PWM通道channel,此板有5路PWM,选择PWM0,参数:0选择频率(period周期),50HZ。参数:50设置占空比,2ms的脉宽占周期20ms的十分之一,也就是10%,填写化成%号的数值,如参数:10,代表180°选择持续输出还是输出一个周期就停止,选择持续输出,参数:0分频精度precision默认为100,不填也许最终:

2022-04-30 22:30:44 1328

原创 使用Betaflight Configurator飞控刷写固件时各步骤的含义

关于ISP、IAP、DFU和bootloader参考上面文章,总结一下:最开始,每次升级程序,将芯片从工作板到升级代码板,反复移植,不方便于是ISP来了ISP:在系统编程,就是通过芯片厂家在芯片出厂时固化的一种程序——bootloader,它能且只能够通过固定的串口或其他通信接口,与电脑连接进行程序设计。IAP:在应用编程,看作是ISP的升级板,IAP技术允许用户应用程序修改flash,有2个bootloader,一个是厂家固化的bootloader,另一个是用户自己自定义bootloader,启

2022-03-28 21:54:19 3409

原创 小米平衡车plus拆机换电池

因学校不允许骑电动车的规定,才有机会见识一下小米平衡车plus内部结构,给大家分享一下,主板端,需要放电,不然拆的过程中会容易被电容里面的电,电伤:手握绝缘柄的螺丝刀,使杆同时接触到正负端,会有啪的一声,注意千万别短接电池!短接的是主板!......

2022-01-23 17:24:33 5553 2

原创 stm32定时器中TIM_ICInit、TIX、ICX、TIXFPX是什么

看这个函数,使用时,需要定义一个结构体变量,结构体变量里面填充数据,然后传入TIM_ICInit进行初始化。TIM_ICInit中,需要用到结构体变量的5个成员:这个函数里面怎么样进行的呢?void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct){ …… … …… … if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) { a

2022-01-09 19:56:47 5428 4

原创 STM8S105S4T6C和STM8S105C6T6对比

STM8S105S4T6,44个引脚,LQFP封装(LQFP44 10X10),引脚比STM8S105C6T6少,但个头比它大。STM8S105C6T6,封装LQFP48(7*7),48个引脚S4T6比C6T6少4个引脚,少在哪?S4T6比C6T6少4个引脚,少了几个功能,这个和stm32各系列不同,stm32不同系列,引脚兼容,功能一样,只是引脚多的,是组多,每组一般最多16个引脚,比如PA,PB---------PG,,,渐少引脚往往是成组的消减,而stm8是每个组里面挑掉一两个,每组一般最

2021-11-22 10:07:20 2512

原创 MOS管与推挽输出、开漏输出

MOS管看作是电平控制的开关,类似三极管,可以通过控制栅极的电平高低控制漏极和源极的导通N沟道MOS管:栅极高电平时,漏极和源极导通,低电平时,,漏极和源极不导通。P沟道MOS管:栅极低 电平时,漏极和源极导通,高电平时,,漏极和源极不导通。CMOS管就是NMOS和PMOS的结合,通过控制(输入级)栅极的电平来控制输出级的电平左图,输入级为低电平时,上面的P沟道MOS管导通,下面的的N沟道MOS管截至,输出高电平。右图,输入级为高电平时,上面的P沟道MOS管截止,下面的的N沟道MOS管导通,输.

2021-11-17 16:51:15 4802

原创 AD18中元器件的中心点标注和叉叉怎么取消掉

不小心按快捷键按错了,结果出现这种圈圈叉叉,干扰布线解决方法:关掉这两个结果:解决!参考:参考的这个有点标题和内容不搭配。牛头马嘴,,,找不到component reference point和3D Body reference point...

2021-10-31 16:55:43 2985

原创 uint8_t / uint16_t / uint32_t /uint64_t 这些数据类型是什么?

uint8_t / uint16_t / uint32_t /uint64_t 都是别名,c语言中有哪些数据类型?怎么样取别名在C语言中有6种基本数据类型:short、int、long、float、double、char1、数值类型1)整型:short、int、long2)浮点型:float、double2、字符类型:char二、使用 typedef猛然一看有点看不懂,可能因为美观原因,源码把它分开写了,实际红色框的是一个整体,是对这个整体取别名,同一个数据类型可以有多个别名,就像在导师叫我

2021-10-26 18:35:04 83224 3

原创 我的共轴双旋翼无人机

已申请专利,终于可以拿出来与大家一起看看,相关资料等毕业论文弄好后再公开!造型酷不酷?有没有心动?想不想看看它怎么上天的?**B站视频链接:试飞:试飞视频原理:俯仰翻滚慢动作...

2021-09-19 10:44:27 1472 1

原创 cubemx使用freertos时用systick和TIM的区别

cube工程和生成的代码上区别1,选择systickKeil:此时,中断优先级的抢占优先级是最低级的15,子优先级是0(分组4)只有带__weak 的 HAL_InitTick2,选择某一定时器:TIM1Keil:有带__weak 的 HAL_InitTick,被overwrite也有真正被调用的HAL_InitTick此时,中断优先级的抢占优先级是最高级的0,子优先级是0(分组4)定时器选择TIM6或TIM7比较好基本定时器(TIM6,TIM7)的主要功能: 只

2021-07-06 22:49:47 3941

原创 matlab——PID控制

只有比例,可看到,按比例扩大了10倍,存在稳态误差,err不能稳定在0第二个PID控制器添加一个I,调成:结果:黄线是P控制,黄线超调量不大,但不能稳定到预期值,存在稳态误差,蓝线是增加I后,构成PI,误差err能达到0,系统输出结果能达到预期值,蓝线超调量大,收敛时间久。第二个PID控制器再添加一个D,调成:红线是加入D后的结果,超调量小了很多,速度也快了,但是KP,KI,KD搭配不是很好,不平缓对P,PI,PID控制器加入噪声,含微分项D的PID对噪声敏感隐藏,PID后微

2021-07-05 21:52:51 3468

原创 matlab绘制根轨迹

1,2,3,4,5,

2021-06-23 11:45:52 1287 1

原创 直接使用hal库创建工程模板

引入这些文件删掉F429没有的功能函数STM32F4 HAL库文件关系图正点原子习惯:全部放置同一个文件夹下都行,这样只是为了更好查找和管理,只要把这些文件加入到同一个工程就行:用stm32cubeMX创建工程...

2021-06-20 09:54:26 253

原创 匿名上位机v2.6和V7自定义帧代码和飞控姿态代码

上传数据给上位机V7.1版本方法1/*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^上传数据给上位机V7.1版本^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ //和上面的帧协议不一样////串口1发送1个字符 ////c:要发送的字符void usart1_send_char(u8 c){ while(__HAL_UART_GET_FLAG(&a

2021-06-15 09:54:17 1476 1

原创 重定向printf,不使用微库,采用ARM Compiler 6 报错如何解决?

复制正点原子的以下代码,不使用微库,采用ARM Compiler 6 报错:报错::’#pragma import’ is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6//加入以下代码,支持printf函数,而不需要选择use MicroLIB //需包含#include "stdio.h"#if 1#pragma import(__use_no_semihosting) //标准库需

2021-06-11 21:40:22 5130 5

原创 MPU9250简单快速更改MPL驱动,方便使用MPL和DMP

附件准备材料:我自己的资料MPU9250.c和MPU9250.h1,使用stm32cubemx配置好IIC2,在c/c++处加入宏定义MPU9250,EMPL最后为:USE_HAL_DRIVER,STM32F103xE,MPU9250,EMPL3,加入对应的lib4,将驱动库加入工程,更改驱动库,注释掉不需要的代码,同时包含头文件MPU9250.h5,只需更改上面3个“inv_mpu.c”,注释掉如下代码:“inv_mpu.h”,包含头文件"inv_mpu_dmp_motion_

2021-06-10 12:44:08 2296 21

原创 MPU9250的MPL移植_HAL库(以STM32F103为主控)

准备材料:驱动库: motion_driver_6.12硬件: 正点原子MINI——STM32f103RCT6硬件IIC——PB8,PB9GY-91模块: 看图可知AD0接地,地址是0X68硬件连接:**生成代码工具:**STM32CubeMX1,选择芯片双击2,选择外部晶振,然后配置时钟硬件外接的晶振是8M,根据自己的晶振选择,选择HSE和PLCLK,输入72,按enter自动配置时钟3,选择sys,配置代码烧入方式为:SWD,基本时钟源没使用操作系统使用的画使用默认的:Sys

2021-06-09 18:45:24 6240 12

原创 解决BUG的一些记录

1,使用STM32cubeMX生成带freertos操作系统的工程,编译,报错,大部分关于port.c和portmacro.h解决方法:在自动下载的那个库里找到文件替换掉这两个文件,这个芯片为STM32F405RGT6,所以选择ARM_CM4F,我的路径:C:\Users\29203\STM32Cube\Repository\STM32Cube_FW_F4_V1.25.2\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F

2021-06-04 22:33:34 567 1

原创 stm32使用SWD下载代码,发现keil端识别不了芯片

背景:画了个飞控板,由于现在芯片“乱涨价”,买个芯片划不来,所以就把一个闲置的开发板的芯片取下来——STM32F405RGT6.如图:;;;把元器件焊接好后,先检测有没有短路,没有短路,插入电脑,发现keil识别不了,起初红框处是空白的检测电路:1,用万用表的电压功能检测到: 5V输入正常,3.3v稳压正常2,检查元器件是否焊错位,引脚是否有焊接反,:无,如stm32芯片有两个点,小的那端才是1脚,对应PCB的这个点,说明芯片安装也没有问题结果:那问题在哪呢?突然想到启动方式的问题或

2021-06-02 20:58:49 11857 11

原创 MiniFly Firmware V1.1开源四轴代码分析七:系统时钟

整个系统时钟是怎么样的?答案:怎么来的?查阅了一下手册,感觉整个时钟配置过程还是挺复杂的,要想配置好,然后能直观的显示各外设使用的时钟就好了,stm32CubeMX就是一个很好的工具。如何根据代码在stm32CubeMX配置时钟?1,打开USER文件夹下的systen_stm32f4xx.c,都是通过预编译来实现代码通用的,需要哪就定义哪所以会编译出一套代码,用不上的代码处于灰色,不用理会,关注的是高亮的代码找到:PLL_M 8PLL_Q 4PLL_N

2021-05-27 16:55:51 290

原创 正点原子wukong开源飞控时钟配置之stm32CubeMX

数字来源下面,go to define就能找到再对照一下,这个说明还没改过来重点来了:进过上面那些参数配置,各外设时钟配置成多少了?使用stm32CubeMX直观了解一下:首先打开RCC时钟,使能外部晶振作为时钟,才能修改硬件接的是8M外部晶振,这改为8修改时发现 PLL_Q 是灰色的,改不了需要修改USB,这个时钟是USB的最终结果:可看到定时器3所在总线是APB1,84M,飞控利用这个定时器生成驱动电调的PWM验证定时器3时钟,频率84M...

2021-05-27 12:47:37 704

原创 stm32修改PWM频率的同时,占空比不变

参考资料:stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用STM32定时器自动重装载寄存器和预加载寄存器的区别与联系结合代码与手册分析这两个函数void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)第一个参数:哪个定时器的通道1第二个参数:使能还是失能过程:1**,临时保存CCMR1的整个16位值**2,将第3位OC1PE位(0x0

2021-05-25 20:27:56 3294 11

原创 AD18如何只看单层器件,更好地摆放器件和丝印

比如我的是双面板,我只想看到底层,但是顶层的也被“透视”,干扰比较大如图:看底层:1,英文输入状态下按VB,将PCB翻转到底层2,英文输入状态下按L,或在右下方Panels处打开View Configuration,如下图3,关闭顶层相关的视图4,打开singe Layer mode,这个时候可以移动底层器件,但不能修改底层丝印位置5,器件摆放好,移动丝印而不移动器件,切换到丝印层即可6,大致摆放好的样子,摆放期间如果发现丝印不太好摆放,可以切换到底层,然后移动器件按,再重新摆放丝印

2021-05-17 11:06:21 7068 2

原创 MultiWiiConf.exe运行不了

参考资料:DIY MWC四轴飞行器的装配与调试MultiWiiConf打不开总结:打不开可能是1,java环境没有配置好2,Java版本老3,还有点错了位置,如下:MultiWii_2_4解压后有两个文件,分别是MultiWii(源码,点MultiWii.ino打开)和MultiWiiConf(GUI配置界面,有点像地面站)MultiWii文件MultiWiiConf文件,里面有几个操作系统对应的软件,选择自己电脑对应的,但我电脑是64位啊,然后我选择黑色那个64,结果总是打不开,后面

2021-05-07 11:52:14 972 3

原创 用visio studio的插件编译时,插件收费,怎么办

参考一种破解Visual Micro的方法在1中,使用ILSpy.exe打开Visual.Micro.Processing.Sketch.dll文件时是从这打开的破解后会返回true2.使用ildasm.exe把DLL这个文件转化成IL文件时,打开软件后是选择左上角的file,找到文件,再点dump没选择文件前是灰色的要在你visual studio安装的位置里面找到Visual.Micro.Processing.Sketch.dll,在扩展程序里面,如果找不到就搜索,然后右键,打开所在位置

2021-04-26 13:54:44 557 2

原创 利用visual studio打开arduino工程的文件.ino文件的正确方式

正常情况下,利用官方自带的arduino IDE打开工程文件是双击.ino文件:但arduino IDE不太好用,想在visio studio2017打开这个工程,怎么办??在visio studio安装好arduino插件后,如果直接双击.ino文件,试图打开整个工程结果是只会采用默认设置的arduino IDE打开,可以右键选择其他打开方式,打开的.ino文件。但这样与之相关的头文件和c/cpp文件没有导入:如何正确打开呢?1,打开——>Arduino Project2,找到需

2021-04-26 12:41:16 13218

原创 AD19插入二维码

开始我自己win10自带的画图生成的.dmp文件,不清晰后面采用这个人的方式,成功了。需要安装PS:在PCB中加入图片LOGO的教程效果还行,能识别还看到一种,是使用AD的插件,但是我没找到,还有那个二维码网址也用不了,所以没试如何在您的PCB大作上添加二维码?...

2021-04-01 17:18:57 1490

原创 如何在visio中插入矩阵公式

1,上方一栏找到并点击“插入”2,如下所示,点击“对象”3,我电脑同时安装了office和wps,里面可能函数有一些公式工具,我选择WPS 公式3.0,点 “确定”。4,弹出里面输入公式,我输入的是矩阵公式,步骤如下1)输入C2)想得到“上下限”,先点左边(红色)再点右边()紫色1在里面输入“上下限”,输入完,键盘右键移动鼠标,准备输入下一个字符3)想得到矩阵符=号【】,点击“围栏模板”,先点左边(红色)再点右边()紫色4)将鼠标切换到中间,点击矩阵里面(红色箭头),再选择

2021-03-27 10:37:53 1935 2

原创 MWC飞控学习之Arduino笔记

Arduino官方的IDE虽然不断进步,修复了各种bug。有着简洁明了的界面,但缺少代码提示、没有自动补全、没有好用资源管理,这些缺点让人头疼不已。好在已经有大神做了各种各样的插件,让我们可以在更加专业成熟的IDE上进行Arduino开发,比如Visual studio。非常好的一个入门介绍:Multiwii初学者详细准备里面说到在Visual studio里安装一个Arduino插件即可实现在Visual studio中编译运行Arduino,安装插件方法如下:用Visual Studio开发Ar

2021-03-05 11:57:44 1278 1

原创 使用visual studio 直接新建项目和新建Arduino project的区别

遇到问题:Intellisense was unable to find Arduino or compatible boards packages. To install hardware package(s) use ‘Manage Boards’ or con…查资料再结合自己“瞎点了几下”就好了,因为现在弄好了,没有了开始的报错信息,开始是空白的,后面这里有了变化,报错好像是说需要安装板子包,比如Arduino UNO是使用ATmega328 芯片,就安装对应包,如上的第3步,我选择了

2021-03-05 11:24:59 373

原创 JDY-24M 超级 BLE 蓝牙模块——理解与实践

**实验1:DY-24M 组网 IO 控制接线图第一部分:**按手册说的,通电后,不发任何指令去修改配置,使用的就是出厂默认的配置,如下:SUBTYPE 默认为 0:自己的KEYx按下,只有别人的OUTPUTx输出高低电平,可通过别人的KEYx来控制自己的OUTPUTx,经过我的测试,发现KEY1和KEY2或者OUTPUT1和OUTPUT2对应不了,我的板子是按照手册的引脚图画的(丝印的KEYx和蓝牙模块所说的KEYx不一致),如图:按道理是这样对应的:结果最下面两个变成:、板子

2021-03-03 16:37:38 3915

原创 Arduino UNO跑FreeRTOS操作系统

实验室翻到一个小开发板——Arduino UNO,学了两天,有点意思哈!比stm32简洁,直接。使用前没那么多配置,也是跑c/c++的,这么简单,以后再玩玩吧参考资料:Arduino运行FreeRTOS操作系统avr (单片机)IC、AVR、51单片机有什么区别?Arduino基本函数介绍Arduino学习笔记(2)-- Arduino基本函数Arduino 语言常用函数说明Arduino Uno入门教程资源汇总Arduino UNO数据手册(新手入门)验证/编译就是编译咯上传就是

2021-03-03 16:34:37 1528 1

原创 freertos与STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM,及如何分配堆栈空间

基于STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM再次理解STM32中的堆栈机制KEIL工具之堆栈2FreeRTOS高级篇7—FreeRTOS内存管理分析FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系使用freertos如何确定分配堆栈空间大小...

2021-02-06 15:13:39 3719 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除