自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (9)
  • 收藏
  • 关注

原创 STM32F4配置内部时钟(HSI)

STM32F4配置内部时钟半年多没更新了,今天配置F4的时候内部时钟问题整了2个小时,记录下这个坑。有些板子由于没有贴外部晶振,所以代码运行起来的时候时钟就会出问题,本来配置的中断是1ms实际跑起来确只有10ms,严重出错了。这种问题解决办法就是配置使用内部时钟HSI本例程只针对STM32F4,其他单片机并未测试过。/** * @brief Configures HSI as the System clock source **/ void HSI_SetSysClock()

2022-03-21 17:17:32 2548

原创 普通定时器输出互补PWM带死区

普通定时器输出互补PWM带死区一般来说三相半桥电路需要互补PWM驱动,而且互补PWM需要带死区,死区的大小跟管子的性能参数有关。公司为了省成本,在云台上把电机驱动芯片替换成三相半桥。用6个MOS驱动无刷电机。这下就需要用到互补PWM了。然后选型的单片机只有一路高级定时器tim1,另外一个电机的PWM驱动分别是tim3,tim4.不同的定时器怎么实现互补PWM而且带死区呢。1、定时器主从功能2、定时器中心对齐模式3、tim3使用PWM1模式,tim4使用PWM2模式4、输出PWM时占空比预留死区

2021-08-06 15:27:41 2760

原创 串口仿真数据正常,不接仿真数据异常

今天遇到一个奇怪的问题,折腾了大半天。具体问题如下:串口我用的DMA空闲中断接收,接仿真器仿真时接收数据完全正确,没有异常。但是仿真器不接的时候,正常外部供电串口接收数据就异常了,经过jscope查看数据,是数据错位了。后来分析如下:1、数据发送接收太过密集?经证实不是这个原因后来发现我接收的数组跟发送的字节数刚好相等,然后我就怀疑是不是这个原因导致的。然后把接收数组改大,问题解决...

2021-08-06 15:10:59 786

原创 keil c语言变量突然的NAN

NaN,是Not a Number的缩写,在IEEE浮点数算术标准(IEEE 754)中定义,表示一些特殊数值(无穷与非数值(NaN)),为许多CPU与浮点运算器所采用。导致变量NAN的原因我大概总结如下,可能还有写情况没想到没列举出来:1、除数为零,例:0/02、负数开根号,例:sqrt(-1)3、log运算中出现负号4、三角函数超出定义域范围,例:asin定义域【-1,1】.tan定义域(-pi/2,pi/2)等...

2021-05-15 08:52:02 3266

原创 华大HC32F460踩坑-pwm

最近用华大HC32F460做三轴云台,在跑电机的时候老是出现一个BUG,就是电机正反转每次开机随机。这个问题差不多找了一天,后面终于发现的是HC32F460的PWM配置问题:PWM占空比为0%或者100%的时候,周期错误,然后随机的出现占空比互补现象;互补现象就是占空比给10%时有机会出现90%输出,复位后又有机会出现10%输出。记录开发过程的坑...

2021-04-13 17:17:30 5234 6

原创 手持无刷云台三轴全角度到底有多少坑

手持无刷三轴稳定器的全角度玩过无人机和无刷电机,再转云台的第一印象就是:手持云台就是无刷电机+姿态解算+姿态控制;刚好就是无人机姿态控制和无刷电机的集合体。再入坑三轴稳定器就会发现:无刷电机+姿态控制只是完成了云台的最基本的控制,一不小心云台就会乱串乱动。哈哈哈!于是尝试这解决这一些列的问题,于是进入到全角度控制:姿态解算的全角度欧拉角有全角度吗?很显然欧拉角没有办法识别全角度,但是四元素可以表示全角度。三个电机的霍尔传感器,磁编码器可以表示全角度,陀螺仪积分可以表示全角度。既然这么多条件都可以

2021-03-31 23:04:11 2286 4

原创 灵动微单片机MM32的PWM配置

MM32SPIN422C今天我们来聊聊这个芯片:本产品使用高性能的 ARM ® Cortex TM -M0 为内核的 32 位微控制器,内嵌三相半桥栅极驱动器与 MOSFET。最高工作频率可达 96MHz,内置高速存储器,丰富的增强型 I/O 端口和外设连接到外部总线。本产品包含 2 个 12 位的 ADC、2 个比较器、2 个运算放大器、1个 16 位通用定时器、1 个 32 位通用定时器、3 个 16 位基本定时器、2 个 16 位高级定时器。还包含标准的通信接口:1 个 I2C 接口、1

2021-03-27 17:26:43 2774 1

原创 无刷电机反方向高速旋转

无刷电机反方向高速旋转最近遇到一个问题,就是无刷电机在给正转的力的时候如果用手往反方向快速的掰,突然的电机会往反方向高速运动,除非电机有阻力让转速慢下来,要不就会一直反方向运动。经过一个晚上的不断排查,终于发现存在此BUGde特点:1、无刷电机运行周期比较长时特别容易出现这个BUG,运算频率高的不会2、无刷电机电角度运算的滤波,滤波频率低的容易出现此BUG,滤波频率高的不会出现记录一个程序员的BUG调试过程,感觉这个挺有意义的就分享出来...

2021-03-17 14:38:37 992 2

原创 keil的jlink重新选择芯片识别

keil仿真的时候jlink需要选择对应的芯片:类似这个,一旦点了这个之后在工程里卖弄就会多两个文件如果第一次选择的芯片不对,需要重新选择,那么就把上图中的JLINKLOG.TXT和jlinksettings.ini删除即可,然后重新进入jlink配置即可出现第一张图中画面...

2021-03-16 13:56:44 5666

原创 MM32 PA13 PA14复用普通GPIO

MM32 PA13 PA14复用普通GPIO最近一个项目为了节省成本,选用了一个脚位比较少的单片机。所以需要用到SWD烧录引脚作为普通IO口用。接下来介绍一下具体怎么用:MM32复用PA13 PA14跟STM32不一样,MM32如下:PA13、PA14初始化前需要做一段时间的延时,防止下次烧录无法正常烧录;PA13、PA14初始化后需要复用GPIO口,复用参考数据手册的复用表:普通IO口复用直接选上表中空的就行了。...

2021-03-01 16:29:18 877 4

原创 ESO怎么计算扰抗

标题

2021-02-27 16:15:42 1375

原创 手持稳定器工作总结(2020)

过去一年做的项目2020年对于我来说应该是一个转折性的一年,2020年做过的项目主要有:1、手机单轴稳定器2、手机三轴稳定器3、无人机机载双轴云台4、健身器材项目5、无刷电机FOC展示项目6、四轴飞行器定高翻滚功能项目7、单轴飞机抛飞项目... ...当然还有一些小项目历时不长并且没有投入市场的项目就不写出来了。一年做这么多项目,可能有人会问,能否做的来,接下来主要解释下这么多项目主要用到的技术算法,大概就能说的很清楚了:首先手机单轴稳定器、三轴稳定器:1、无刷电机FOC算法2

2021-02-20 08:58:04 1015 5

原创 单片机PWM方向

单片机PWM奇怪方向问题最近配置GD32F130单片机的PWM 的时候遇到一个很奇怪的问题,就是第一次烧录程序时PWM输出为反向(占空比设置10%,输出90%),后面单片机正常上电时PWM输出正向(占空比设置10%,输出10%),这个问题令人匪夷所思。/* CH2,CH3 and CH4 Configuration in PWM mode */ TIMER_OCInitStructure.TIMER_OCMode = TIMER_OC_MODE_PWM1; TIMER_OCIn

2020-12-15 11:22:41 738

原创 无刷云台怎么动态调整控制参数

无刷云台动态调参最近测试了市面上的两款云台,一款是智云新出的smooth x和随拍的一款P1,发现了一个共同的现象。就是稳定器挂手机的时候测试各方面稳定效果还是可以的,但是手机拿下来之后发现稳定器会变得高频振动。其实分析之后也能找到原因,挂手机负载变重了自然惯量大,不容易引起高频振动;不挂手机负载轻惯量小,更容易引起高频震动。解决思路所以我就想了,会不会有一种控制算法可以同时适应挂手机和不挂手机这两种状态呢?思路分析如下;1、控制加入使用的是串级PID控制,分外环角度环,内环角速度环。2、先从

2020-08-19 18:08:05 1164

原创 GD32E230芯片无法识别

GD32E230芯片无法识别GD32E230板子回来后,开始接上jlink烧录,但是板子第一次能烧录然后第二次就不行的了。换了好几个板子都是。搞了好几个小时。整个人都快崩溃了。后面也是经过不断的尝试,终于搞好了。总结了一下,主要要注意的问题点如下:GD32E230 VDD脚和VSS正常接电并经一个滤波电容。RST引脚正常上拉一个10电阻和接一个104电容到地BOOT0脚接地。我之前搞不定就是因为BOOT0没有接地,悬空的导致烧录不正常。...

2020-07-21 10:58:47 2490

原创 GD32E230 ADC注入通道

GD32E230 ADC注入通道外部触发输入的上升沿可以触发规则组或注入组的转换。用于 ADC 规则通道的 规则通道的 外部触发,很多场景上我们可以使用外部触发读取ADC,比如控制无刷电机要采样电机每相的电流时就需要用到注入通道,在每个PWM的高电平期间读取电机ABC相电流。大概配置如下://各个时钟初始化,GPIO的初始化void rcu_config_inject(void){/* enable GPIOC clock */ rcu_periph_clock_enable(RCU

2020-07-17 16:19:14 4774 4

原创 cannot access memory

cannot access memory先说一个经历:在一次我测试单片机FLASH时候,程序就是一直运行的擦除FALSH,写入FLASH。然后再想通过SWD重新烧录程序就无法烧录进去了。具体现象如下:再看keil里面的属性debug,芯片又是可以识别到的,就是无法烧录。后面也是经历了各种痛苦,某度上各种找答案。终于找到原因:就是这种情况下,代码运行后会影响到芯片而烧录,所以必须接上复位脚让芯片不能正常工作,把烧录速度讲到最低,先擦除芯片,然后放开复位脚重新烧录即可。...

2020-06-24 13:37:46 18714 7

原创 GD32E230串口DMA发送接收

GD32E230串口DMA发送接收串口初始化分一下几个阶段:·GPIO初始化·串口初始化·中断使能初始化·DMA初始化void Uart_Init(void){/* initilize the com */ com_gpio_init(); com_usart_init(); /*configure DMA interrupt*/ nvic_config(); TxRx_DMA_Config();}void com_gpio_init(void) //

2020-06-18 09:08:27 3465 2

原创 STM32单片机外部晶振内部晶振配置

STM32F4外部晶振配置system_stm32f4xx.c这个文件里面有晶振使用的配置,一般情况下,跑一个单片机需要做系统晶振初始化,以STM32为例,主循环需要先配置SystemInit();SystemInit();里面也可以选外部晶振或者内部晶振搜索USE_HSE_BYPASS,如果有定义则使用的外部晶振,没有定义则使用的内部晶振,目前我是屏蔽的。而使用外部晶振的话,晶振大小在哪里改呢如图改PLL_M,目前我用的是25M....

2020-06-17 14:00:48 4386

原创 GD32E230开发环境搭建 keil无法识别芯片 jlink无法烧录

GD32E230开发环境搭建GD32E230对开发环境是有要求的,要不会出现无法识别芯片的问题;1、keil必须是5.26以上板本2、jlink驱动必须是6.0以上版本3、keil安装目录下D:\Keil_v5\ARM\Segger\jlinkARM.dll必须是6.0以上板本4、jlink必须是V9.0以上板本这几个条件抖满足了就不会存在无法识别芯片的情况了。...

2020-05-20 09:14:26 7334 5

原创 FreeRTOS移值

FreeRTOS移值首先需要获取源码包啊:http://www.freertos.org/到官网下载。选出一般常用的几个文件:把文件拷贝整理到一个文件夹FreeRTOS.然后把这个文件夹复制到STM32工程里面。keil添加代码文件:添加好之后,keil project添加.C文件到此编译一次。编译过程中会出现报错:未发现FreeRTOSConfig.h这个文件,到官网找一下这个.h,然后复制到自己的工程,我的建议是复制在FreeRTOS这个文件夹里面,方便以后移值。再次编译,还是有

2020-05-13 15:46:13 323

原创 嵌入式heap_size大小设置

嵌入式heap_size大小设置一般的单片机在启动文件都有一个heap_size大小配置:以STM32为例,这个数值设置的大,会导致后面跑裸机的时候容易出现内存报错,如果没有用到标准库的malloc,这个值是可以设置为0的。这样跑裸机就可以片内有多少SRAM就用多少SRAM。...

2020-05-12 14:54:13 4546 1

原创 GD32E230 PWM配置

GD32E230 PWM配置//GPIO配置void PWM_gpio_config(void){ rcu_periph_clock_enable(RCU_GPIOA); gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1); gpio_output_options_set(GPIOB, GPIO...

2020-05-07 17:28:07 3944 8

原创 GD32E230内部晶振选择

GD32E230内部晶振选择初始开发这个芯片的时候,记得仿真出错还是啥的,后来找了很久这个问题。现在标记一下,如果你也在开发这个芯片而遇到一些奇怪的问题可以参考一下:system_gd32e230.c里面修改如下:/* select a system clock by uncommenting the following line *///#define __SYSTEM_CLOCK_8M...

2020-05-07 09:24:18 3955 2

原创 华大单片机HC32L130/HC32L136从机IIC通信

从机IIC理论知识主机IIC的做法比较多,从机IIC的就相对比较难一点。先补充一下从机IIC的思路:先看IIC时序图,然后根据时序图理清IIC从机需要做哪些判断:从机发送:·判断IIC START信号,有IIC start信号过来之后进入从机地址接收判断·判断SCL搞低电平·在IIC高电平期间判断SDA电平·接收到八位从机地址后判断地址是否跟设备从机地址一致·接收到的从机地址跟...

2020-04-29 13:53:28 4025 1

原创 华大单片机HC32L130/HC32L136PWM配置

标题可编程计数阵列PCAPCA(可编程计数器阵列 Programmable Counter Array)支持最多 5 个 16 位的捕获/比较模块。该定时/计数器可用作为一个通用的时钟计数/事件计数器的捕获/比较功能。PCA的每个模块都可以进行独立编程,以提供输入捕捉,输出比较或脉冲宽度调制。另外模块 4 有额外的看门狗定时器模式。16 位重载 位重载 计数模式即PWM模式计数器计数到...

2020-04-23 08:54:12 6608 3

原创 华大单片机HC32L130/HC32L136红外端口配置

华大单片机HC32L130/HC32L136红外端口配置HC32L130一共有三个引脚可以配置成红外38.4KHZ输出引脚#define PIN_PWM_IR GpioPortB, GpioPin9void IR_PWM_Config(void){stc_gpio_cfg_t stcPBIRPort; DDL_ZERO_STRUCT(stcPBIR...

2020-04-14 10:47:17 2761

原创 The connected J-Link is defective,Proper operation cannot be guaranteed......

关于keil出现仿真时出错的解决方法·安装jlink_V4.9驱动·找到驱动安装目录C:\Program Files (x86)\SEGGER\JLink_V490下复制JLinkARM.dll·找到keil安装目录D:\Keil_v5\ARM\Segger,把刚才复制的JLinkARM.dll替换掉里面的·重启keil·进入仿真就不会有报错了...

2020-04-08 11:33:32 286

原创 STM32F4 串口DMA接收

STM32F4 串口DMA接收STM32F4 串口DMA接收需要注意的点:DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; //存储器到外设模式 RX TX不同这里,外设到地址或者地址到外设这句代码跟发射的不一样。下面直接上代码:在这里插入代码片...

2020-03-31 09:41:29 4160 3

原创 STM32F4串口DMA周期发送

STM32F4串口DMA周期发送·直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。·两个 DMA 控制器总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达 8 个通...

2020-03-28 09:44:06 2282

原创 keil中文显示乱码

keil中文显示乱码没啥好说的,直接上图:1、点击Edit2、Edit下拉选择Configuration3、Encoding选择如图

2020-03-25 14:27:14 2817

原创 电子稳定器云台的校准

云台校准包括哪些·云台无刷电机的定位·云台霍尔传感器AB相最大最小值收集·云台陀螺仪的校准电机定位无刷电机为啥要做定位呢,了解电机驱动的都知道,电机是靠正弦波去驱动才能转的更顺滑,电机的机械角跟驱动电压越趋近正弦关系则电机转动越顺滑。所以在做云台时需要有一个传感器来记录电机的机械角,实际上传感器的角度怎么跟电机的机械叫一一对应起来这就需要给电机做定位了。rollPhase[0] = (...

2020-03-24 16:30:54 4729 4

原创 无刷云台之跟随模式

三轴无刷云台锁定模式跟随模式介绍目前市面上的手持云台,大概都有两种使用模式:锁定模式跟随模式锁定模式即云台锁定欧拉角,镜头始终锁定Pitch,Roll,Yaw。跟随模式即云台锁定编码器角度,镜头跟随着电机的固定位置。一般情况下,功能的实现都是先实现锁定模式,相当于无人机的姿态控制原理,无论云台怎么动,镜头的欧拉角始终不变,这个功能实现之后才好实现跟随模式。跟随模式的实现做过云台的工...

2020-03-19 10:14:38 4095

原创 无刷云台之坐标转换篇

坐标转换篇

2020-03-17 14:06:47 2822 5

原创 无人机光流定点讲解

无人机光流定点光流是测速算法,并不是直接定位的。简单理解,光流就是通过检测图像中光点和暗点的移动,来判断图像中像素点相对于飞行器的移动速度。如果地面是静止的,自然就可以得到飞行器相对于地面的移动速度啦。所谓光流定位,其实是利用光流测速再积分定位而已啦。无人机做光流定点算法需要注意一下几点:1、飞机在不同高度光流传感器所能测到的像素点是不一样的,无人机距离地面低的时候对距离的感知比距离地面高的...

2020-03-10 10:31:41 18732 4

原创 无人机电机线性化函数解说

y = (k−1)2∗k\frac{(k-1)}{2*k}2∗k(k−1)​ + (\sqrt ((​(1+k)^2)))

2020-03-09 17:56:59 634

原创 无人机小四轴定高篇

无人机定高篇定高,也是无人机的标配功能,可以说必须要有的。一般来说定高怎么做,常规的思维就是计算出无人机的高度和Z轴速度,然后对高度和速度进行PID运算。实际上大思想就是这么的简单,但是要真的调的好那可就不简单了。1、计算高度和速度一般来说要定高就需要相应的能够计算高度的传感器,在这我以气压计为例。市面上的气压计很多种,气压计根据海拔高度不同而气压不同的这个原理可以相对的计算出无人机的高度,...

2020-03-03 18:08:48 9677 7

原创 无人机之姿态控制篇

姿态控制篇拿四旋翼无人机为例,四个桨叶旋转是的无人机产生了升力,但是这个升力要怎么匹配才能使得无人机能够平稳的飞行呢,这个就是无人机姿态控制的关键。如图四个电机1、2、3、4,水平位置X,Y。要想使无人机平稳的飞行则水平位置XY的升力必须达到平衡。...

2020-02-28 17:27:41 10091

原创 无人机姿态解算代码讲解

无人机姿态解算代码讲解姿态解算,对于无人机飞控算法来说极其重要,无人机的自稳飞行以及后面的一系列的高度数据融合,GPS数据融合、光流数据融合等都会有影响,所以理解好姿态解算这个算法还是很有必要的。关于太多的理论的知识已经有很多的网上的解说,这次我写的是我这几年对姿态结算的代码的理解,怎么去调参数,哪些代码起着什么样的作用。先上个姿态解算的结构框图: 姿态解算输入数据为三轴加速计,三轴陀螺仪...

2020-02-26 08:39:58 4998 3

原创 keil空间不足,.\Objects\template.axf: Error: L6406E: No space in execution regions with .ANY selector mat

关于keil空间报错,我总结了一下集中解决方案:1、有可能是所选主控芯片RAM,ROM真的被用完了,这是需要更换主控芯片2、keil里面的优化还可以继续优化省出一点空间下面红色标的选择跟你的主控芯片一样大小的空间数值3、还可以做如下优化,打开优化等级,优化等级越高程序优化的越多3、有可能是程序里面的配置出错了,实际上芯片空间没用多少但是编译后报错空间没有了,解决如下,红色标的可以改为...

2020-01-09 17:44:12 26389 4

GD32F350_bootloader_iap_app.rar

GD32F350的IAP升级程序,包括IAP和APP,Ymodem

2021-08-13

MM32SPIN422C驱动.rar

灵动微单片机的底层驱动,包括ADC PWM FLASH GPIO 模拟SPI都是经过产品出货验证的,现在分享给大家

2021-03-27

STM32F103_CAN通信例程.rar

STM32F103 CAN通信例程,直接接CAN模块可以跑通通信

2021-02-04

反正切反正弦查表法.rar

查表法计算atan2、asin的数值,0.1°精度1KSRAM目前,精度可自行调整,精度越高则占用的空间越大。

2020-07-15

STM32无刷电机FOC程序-FOC5.3hall-oled.rar

无刷电机FOC程序代码,霍尔传感器,电流环+速度环控制。FOC Clark变换+park变换+反park变换+SVPWM输出,性能相比优于简单的SPWM。高级定时器捕获霍尔信号,time+adc注入通道读取相电流,电流环控制频率达到20Khz,性能优越。

2020-07-08

blheli.rar

开源无刷电机电调资料,无感方波控制。包括原理图,源代码。主控使用C8051单片机,无传感器控制无刷电机,启动顺畅,可快速变速。

2020-07-06

STM32平衡车.rar

STM32平衡车源代码,包括原理图,代码详细注释。STM32F103C8T6各种驱动,源码包括姿态解算,步进电机控制,串级PID控制

2020-07-06

在线应用升级STM32F103C8T6.rar

这个资源有STM32F103C8T6的IAP在线升级程序和应用程序,都是直接可用的

2019-08-18

xn297无线传输.docx

基于STM32下开发的一款2.4G无线通信,此无线芯片为XN297,常用于玩具类无人机,玩具类产品等。

2019-08-04

空空如也

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

TA关注的人

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