产品名称:TOWER PRO(辉盛)大扭力舵机MG996R (MG995升级产品)6v/11Kg
厂家编号:MG996R
产品净重: 55g
产品尺寸: 40.7*19.7*42.9mm
产品拉力: 9.4kg/cm(4.8V), 11kg/cm(6V)
反应速度: 0.17sec/60degree(4.8v) 0.14sec/60degree(6v)
工作电压: 4.8-7.2V
工作温度: 0℃-55℃
齿轮形式: 金属齿轮
工作死区: 5us (微秒)
适合机型: 50级-90级甲醇固定翼机以及26cc-50cc汽油固定翼飞机等

后又改用别的舵机:

硬件问题:
问题一
舵机的精准度和响应速度。

用按键调整舵机,
674-中值,  左极限:502-左29度, (674-502)/30=5.73。每度5.73。 5.73/10000*20=0.01146ms=11.46us.   工作死区:5us。右极限:(865-674)*  
但是我用按键调整时从中值。向右打舵时需加60  就是增加0.12ms脉冲宽度才会第一次转,左边是好的。然后右打30度或者左打30度,回舵的时候,反应很慢,也是需要加50到60才开始第一次回舵。之后就是正常的。
打算换一个舵机,来试试。
 
问题三:
摄像头加滤光片后,摄像头自动进入白平衡调节。此时应该将滤光片去掉,调好白平衡后,再戴上滤光片。
软件问题:
问题一:
遇到的问题:测试各个模块代码都没有问题,读出全局变量的值被改变了。原来是函数嵌套太深了,把栈撑爆了。
stm32内存分布-栈,堆,静态存储区。
栈:  Stack_Size      EQU     0x00000400  .s文件内核启动代码中的。规定栈的大小。局部变量的内存都分布在栈上,函数地调用也会在栈上,定义局部变量避免大数组,以防栈溢出。
栈的大小:0x400=1024个字节大小。
堆: Heap_Size       EQU     0x00000200  规定堆的大小。malloc或者new来申请堆内存,用完后然后free或者delate释放内存,如果未释放则出现内存泄漏,
静态存储区:static关键字,全局变量,
解决办法:我们没有用到堆内存malloc来申请内存。将堆内存改为0,那么内存分布就是静态存储区+栈了。
.c文件先汇编成.o文件,然后在链接成可执行文件,
 
问题二:
数据大小端的问题处理数据。
接受到的数据是高字节在前,低字节在后,得处理一下,
问题三:
舵机PD算法的参数确定,
问题四:
摄像头采集的数据有跳变,是因为摄像头电源和mcu的电源必须统一。于是乎就采用软件均值滤波。各种尝试。。但是最后发现是硬件的供电问题。困扰好久。才解决了数据跳变的问题。(自己差点都准备换别的摄像头了)。特别悲催。。坑爹。。。
 
检查问题步骤:
1.先观察摄像头数据,是否输出。
2.再看X,Y,编码器计数。
 
 
/ ******************这里摘自网友博客**********************/
编译工程:
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:

Program Size: Code=6320  RO-data=4864  RW-data=44  ZI-data=1636  
代表的意思:
Code :是程序中代码所占字节大小
RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only)
RW-data :程序中已初始化的变量大小   (个人理解”:Read/Write)
ZI-Data :程序中未初始化的变量大小     (个人理解 :Zero Initialize)

ROM(Flash) size = Code+RO-data+RW-data;

RAM size = RW-data+ZI-data

可以通过.map查看占用的flash和ram大小

 
/ ******************这里摘自网友博客**********************/
 
 
 
 
 
 

舵机&数据处理&stm32内存之堆栈溢出(遇到的问题)的更多相关文章

  1. STM32/GD32上内存堆栈溢出探测研究

    无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2, ...

  2. STM32堆栈溢出

    在使用STM32读取SD Card的文件时,总是会卡死在读函数那里 res = f_read(&fsrc, gbuffer, sizeof(gbuffer)-1, &br); 而且出现 ...

  3. 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法

    闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...

  4. arcgis engine 中出现的内存堆栈溢出问题。

    两种解决方案: 1.循环加载mxd文档的时候出现的堆栈溢出,解决办法是每次循环结束时清空FeatureLayer,感觉并不好,但是确实可以实现功能. 2.循环调取featureclass的search ...

  5. STM32 内存分配解析及变量的存储位置

    内存映射 在一些桌面程序中,整个内存映射是通过虚拟内存来进行管理的,使用一种称为内存管理单元(MMU)的硬件结构来将程序的内存映射到物理RAM.在对于 RAM 紧缺的嵌入式系统中,是缺少 MMU 内存 ...

  6. STM32内存知识

    在了解STM32内存之前需要了解 MCU 的型号和MDK 中的.map 文件,很多刚学习 stm32 时都不会过多的去了解 MCU 的选型,是在太枯燥了.这里在从新了解一下,久了就熟悉了. 一.STM ...

  7. CC_STACKPROTECTOR防内核堆栈溢出补丁分析【转】

    转自:https://yq.aliyun.com/articles/1723 摘要: 作者:王智通   CC_STACKPROTECT补丁是Tejun Heo在09年给主线kernel提交的一个用来防 ...

  8. java service wrapper 级别为info导致内存剧增直至溢出

    上周,公司某一环境发生java service wrapper内存剧增导致最后被自动killed的情况,经过分析,确定导致java service wrapper(后续简称wrapper)守护进程内存 ...

  9. 函数调用堆栈及活动记录 堆栈溢出 stack overflow

    小结: 1.当被调函数返回主调函数时,被调函数的 活动记录-activation record / 堆栈帧-stack frame 被 弹出-popping 程序执行栈-program executi ...

随机推荐

  1. idea打jar包并部署java web项目

    1.idea打jar包 (idea提供界面是jar包方式) 点击package,结束就OK,jar包一般放在target里面 部署项目 1.停止之前的服务: 查到到java的所有进程:ps -ef|g ...

  2. 控制台程序读取Excel设置角色权限

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复283或者20181118可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  3. 我的第一个python web开发框架(22)——一个安全小事故

    在周末的一个早上,小白还在做着美梦,就收到了小美的连环追魂call,电话一直响个不停. 小白打着哈欠拿起电话:早上好美女. 小美:出事了出事了,我们公司网站一早访问是一片空白,什么内容都没有了,你赶急 ...

  4. Python基础——6面向对象编程

    类和实例 类是抽象的模版,例如汽车:而实例则是拥有相同方法的类的实现,例如汽车里面有大众.宝马.奔驰等等,这些车都能在地面上跑,但是它们的具体数据可以不一样. calss Student(object ...

  5. pymongo 一篇文章搞定

    一 安装 pip install pymongo 二 python连接mongodb数据库的前提 确保pymongo安装完毕 mongodb数据库的服务器端(mongod)必须处于启动状态 三 连接m ...

  6. Python开发【第一篇】基础题目二

    1 列表题 l1 = [11, 22, 33] l2 = [22, 33, 44] # a. 获取l1 中有,l2中没有的元素 for i in l1: if i not in l2: # b. 获取 ...

  7. excel poi导出demo

    最近做了一个excel 导出的demo,是抄写老大的(嘻嘻嘻),现在把demo源码放在这里 链接:https://pan.baidu.com/s/1_xj0hej-1xwX5JF39acEOg 提取码 ...

  8. 使用serialize时多数据传递

    class CartList(APIView): #定义编辑方法 def post(self,request): username = request.POST.get('username') # p ...

  9. Linux内存管理 (7)VMA操作

    专题:Linux内存管理专题 关键词:VMA.vm_area_struct.查找/插入/合并VMA.红黑树. 用户进程可以拥有3GB大小的空间,远大于物理内存,那么这些用户进程的虚拟地址空间是如何管理 ...

  10. .netcore mvc docker环境jenkins一键部署(DevOps)

    [前言] DevOps方面的文章很早之前就想分享了,挤出一点时间把前段时间搭建的一些提高开发效率的东西给大家分享一下吧. 本文介绍了一个.netcore mvc web项目,从项目push到githu ...