有锻炼大腿肌肉上下台阶会制作控制单片机的app嘛?只要添加的上下左右能让单片机接受到就可以了?很急,4号要演示。

查看: 355|回复: 5
经验78 点在线时间9 小时威望78 点金钱72 ¥点券0 ¥魅力72 最后登录注册时间主题帖子精华0积分78阅读权限20UID215952
中级会员, 积分 78, 距离下一级还需 122 积分
19:19 上传
301 和303云台是一种重型监控用的云台,分为外置485 解码,和外置手动控制,和内置485 解码三种.看网上的介绍,水平负重25公斤,垂直负重12公斤(可垂直串联2个云台,云台自重4公斤,也可以将云台外壳去掉,减重,用塑料壳代替),可上下左右旋转,自带限位器(可调),485 解码器可以与ARDUINO等单片机通讯,如果做成4足机器人,每条腿串联两个云台,4条腿可负载85公斤重量,抬起一条腿,负载可以算不变.唯一的问题就是云台的转速,只有每秒5度,这主要是同步电机用的是交流24v/50hz,或220V/50HZ的电源,要想加快转速,就必须用变频电源,将50HZ提高到100HZ或者更高,或者只能订做一批云台用别的电机代替同步电机.
19:19 上传
单个云台的XYZ轴的角度,可以用串口6轴加速度计/陀螺仪MPU6050模块来测量,只要把这个模块装在塑料盒子里,贴在云台的表面就行了,还有无线版本的,我看介绍,要精确测量Z轴要用9轴的版本,这个模块我试验过,可以和ARDUINO通讯,用ARDUINO的软件串口可以控制几个MPU6050 ,需要把该模块的自带程序改一下.
19:19 上传
19:19 上传
经验301 点在线时间511 小时威望1359 点金钱490 ¥点券8 ¥魅力490 最后登录注册时间主题帖子精华0积分301阅读权限30UID33705
高级会员, 积分 301, 距离下一级还需 99 积分
这个想法不错,控制精度够吗?
经验5 点在线时间1 小时威望83 点金钱4 ¥点券0 ¥魅力4 最后登录注册时间主题帖子精华0积分5阅读权限10UID190304
实习会员, 积分 5, 距离下一级还需 3 积分
建议换方案,这种台的减速配比太大了,不适合做,而且没闭环精度很差
经验46 点在线时间1 小时威望404 点金钱120 ¥点券0 ¥魅力120 最后登录注册时间主题帖子精华0积分46阅读权限20UID217479
中级会员, 积分 46, 距离下一级还需 154 积分
一看结构就是重型的,能坐一个小孩了没问题,,
经验78 点在线时间9 小时威望78 点金钱72 ¥点券0 ¥魅力72 最后登录注册时间主题帖子精华0积分78阅读权限20UID215952
中级会员, 积分 78, 距离下一级还需 122 积分
tony888 发表于
这个想法不错,控制精度够吗?
只是想法,精度不知道
经验78 点在线时间9 小时威望78 点金钱72 ¥点券0 ¥魅力72 最后登录注册时间主题帖子精华0积分78阅读权限20UID215952
中级会员, 积分 78, 距离下一级还需 122 积分
igbt也疯狂 发表于
建议换方案,这种台的减速配比太大了,不适合做,而且没闭环精度很差
这个是参考,大机器人不是玩具的设计
微信:caoyin513
Powered by2016 R&S多域测试应用会议
智能后视镜产品方案对接会
中国LED智能照明高峰论坛
第三届·无线通信技术研讨会
第二届·中国IoT大会
ETFo智能安防技术论坛
移入鼠标可放大二维码
单片机程序总跑飞?小技巧帮你忙
来源:电源网 作者:佚名日 09:58
[导读] 经常接触单片机的朋友,肯定遇到过单片机程序跑飞的问题。由于程序较为复杂,所以一旦出现跑飞的现象就比较难以查找错误出现的地方,网络上对错误的解释和解决方法也比较五花八门,并不方便查找。
  经常接触单片机的朋友,肯定遇到过单片机程序跑飞的问题。由于程序较为复杂,所以一旦出现跑飞的现象就比较难以查找错误出现的地方,网络上对错误的解释和解决方法也比较五花八门,并不方便查找。小编特意帮大家整理了关于单片机程序跑飞死机的原因,大家快来看看能不能在其中找到自己想要答案吧。
  单片机程序死机,跑飞了可以从以下几个方面查找原因:
  1. 意外中断。
  是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。
  2. 中断变量处理不妥。
  若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。
  3. 地址溢出,常见错误为指针操作错误。
  我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。
  4. 无条件的死循环。
  比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制。
  5. 看门狗没有关闭。
  有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗。
  6. 堆栈溢出。
  最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
  通过本篇文章,大家是否找到了自己想要的问题解决方法了呢?就算没有找到,本篇文章也能帮助大家在一定程度上预防跑飞现象的发生。
如今,物联网浪潮已然席卷至汽车电子产业,发动机控制系统、底盘控制系统和车身电子控制系统已模型初显,安全...
ADAS市场或破千亿
国产汽车雷达将爆发
抢占智能汽车制高点
为自动驾驶保驾护航
电动汽车面临的挑战
单片机相关文章
单片机相关下载
不论是不温不火的智能穿戴、智能家居类产品,还是最近大火的各种用途的智能机器人。我们明显感受到在硬件智能化的过程中,语音交互已成为一项普遍...
做存储将近17年历史江波龙电子,一直坚持对存储产品的耕耘,目前产品包含U盘、卡类、SSD以及eMMC,公司秉持DMS的服务理念,不断创新存储产品设计与研发...
创新实用技术专题
版权所有 & 深圳华强聚丰电子科技有限公司第一环:ID--&F1(ID)
-----》IDX,将ID通过自定义的一个算法F1,转换为一个整数IDX ,
F1为不可逆运算,也不能被轻易分析,这个实际上是容易实现的。然后,将IDX保存到EEPROM或FLASH的任何地方,我们通过编一个函数
GET_IDX()能够读出这个数即可。
第二环:再编一个函数:int
&&& return F1(ID)-GET_IDX()+1;
int getmy_0()
&&&& return
F1(ID)-GET_IDX();
还有一些其他自定义的函数内:都可以直接使用(F1(ID)-GET_IDX()) 来替代0;
直接用(F1(ID)-GET_IDX()+1)来替代1;
第三环:在程序任何需要使用到1的地方,都可以考虑使用getmy_1()代替。或即使本不使用1,也可以来用上一下:如:
x=(x+1-getmy_1())*getmy_1(); 或把
&&& for(i=0;i&=count-1;i++)& 改为:
for(i=getmy_0();i&=count-getmy_1();i++)抑或是:指针 p++;可以改为:
p=p+getmy_1(); 或者:给函数传递变量时,传递方在 变量上+F1(ID), 被调用的函数在
变量上--GET_IDX():比如本来是
&&& void f1(){ int
i,j; .... j=f2(i); }&&& int f2(i){ return
&&& void f1(){ .... j=f2(i+F1(ID)); }&&& int f2(i){ return
(i-GET_IDX())*2; }
如程序被非法复制:从ID无法得到IDX,那么IDX和F1(ID)不相等,那么getmy_0不再是0,getmy_1不再是1, 程序将出现什么结果,谁都无法预料了。---------------------------------------------------------
特点: 由于整个程序的加密,采用了&运算加密&的思路, 而非判断加密, 又没有用到任何一行
if判断,让解密者去想破脑袋吧。
即使猜测到有可能是这种加密思路,但是程序并不是基于if判断跳转,加密的作用自然分布在程序的各个地方,怎么去改,也很伤脑筋了。 直接修改getmy_1和getmy_0,这个首
先是得分析出加密思路时才能作出的。
另外修改getmy_1和getmy_0只是干掉简单的部分。
还有一些是很难干掉的:给函数传递变量时,传递方在
变量上+F1(ID), 被调用的函数在 变量上--GET_IDX():比如本来是
void f1(){ int
i,j; .... j=f2(i); }int f2(i){ return
void f1(){ .... j=f2(i+F1(ID)); }int f2(i){ return
(i-GET_IDX())*2; }
另外,包括一些全局部变量的处理,可以在一些函数里面加上F1(ID); 在;另外一些地方进行-GET_IDX()的操作,并不会将代码简单集中放到一点的。当然,如果精准的理解了整个程序的加密思路来说,这个也可以花时间干掉,不过这种加密方式本身目前是很少有人用的。总之这种加密强度远高于简单的if比较方式。这个是一个新的基本思路,我举的例子只是一些简单的例子,完全可以自己做得更加灵活。
F1当然是一样的啊。只是ID不同。顺便回复上楼,我有个前提: 只要单片机具有真正唯一ID,这个意思包含:
单片的ID不可以复制。你说那个地方只是怎么去拷贝程序出来, 如果单片机具有真正唯一ID, 拷贝程序是没有用的。
大家先别拍砖头,思路很不错。从复杂度上已经增加到了一定程度。 建议做成强制in-line,否则对破解人来说太明显&&因为大量的逻辑都指向某一个或某两个函数&& 别低估干这行的智商&&所谓没有金刚钻,不揽瓷器活。另外,用减法做比较也是业内常识&&其它还有用异或结果是否为0&&这些都是常见的特征&& 对,
inline!好思路, 必须的!
代码尺寸就上去了哦~
执行效率也随之受到影响&&不过如果有内部的什么1~4个周期的硬件CRC之类,就可以 解决效率问题,并且彻底把算法隐藏好&&问题是&&这个CRC硬件最好是不公开的才行&&有一些芯片还有一些特殊矩阵转置(permutation)外设&&也都没有对外公开&&
隐藏加密算法的加密应用范围受到影响,因为用的人多了,自然就公开了,公开加密算法,没有密钥但依然很难解密的才有生命力,楼主这种思路是能够增加破解的困难,不过只能给盗版者加工资。当然有些小产品,利润和市场本来不大,盗版的成本太高也的确能保护可怜的程序员
所有的单机程序都是可以破解的,真正要保护自己的成果其实并不是通过加密,而是通过网络服务,这就像杀毒软件,只要联上网,主动权永远掌握在自己手中,这样的软件根本就永不着加密。就像微软的WINXP,再怎么加密也会被破解,但是只要联网,就可以黑你屏,就像单机游戏,今天做出来,明天就被破解,可是网络游戏,你见过破解的吗?除非入侵服务器,只要一入侵就被发现。所以单片机要想完全保护产权,就要提供网络化服务。
首先不要忙着拍砖,我来整理一下思路。利用全球唯一ID(每颗MCU都有一个唯一ID)的加密精髓在于防止程序轻易读出的情形,甚至HEX
ROM根本无需加密,和破解读出HEX
code的难易程度没有关系。实际上只需要两步: 1.自己想一个认为非常好的算法,利用MCU的GUID生成另外一个ID(可变长),再自己设计一个下载器(加密算法也在里边)烧录到EEPROM或Program
ROM里边。保管好烧录器,不要外泄。你的烧录器就是一个加密工具! 2.在你的程序当中分布式的对用烧录器烧进去的加密后ID解密。这个比较重要,因为解密代码写的过于集中便于反汇编分析。比如不要解密后不正确不要进入死循环,不要立刻封杀所以功能,如果是盗版你故意给他几个致命BUG,让他抄袭后生产退货,损失更大。加密的结果就是烧录到每个MCU的HEXCODE是不相同的,即使读出了一个MCU的HEXCODE,烧到另外的MCU是不能通过解密算法验证的。唯一的解密的方法是去分析你得HEXCODE,分析出加密算法,破解者再设计出和你一样的烧录器!总之,这个方法只能对比较大的Program
ROM有效果,如果是小的MCU,比如只有1KB
ROM就很难做好,毕竟代码少,容易分析。说实话,如果有这样的功底的工程师去反汇编你的代码,说不定他就正向设计来得更快!这只是防盗防火防小人而已。
用simlator去跟踪程序。然后找到GUID。替换掉即可。
STM32的UID有一部分是说明这个片子在晶圆的XY坐标位置的,一个晶圆上面所有的片子UID都不一样,至于不同晶圆的UID如何实现不同我就不知道了。。在晶圆上实现个唯一ID又难了?激光几闪,随机割断96个硅片的导线就获得了96bit的唯一ID了------------------------
楼主这个加密方法确实不错,不过前提是inline的方式,否则频繁调用某个函数很快就会被发现,另外加密后的IDX最好在启动时就读取到RAM中,否则频繁读取某个FLASH或EEPROM位置也很容易被发现,最后,还需要选用解密成本较高的单片机,如最近一个朋友想解密一款NEC的单片机,读出ROM的费用就需要近20万。 另外楼上说这个方法简单的,只是因为你已经看到了楼主的加密思路,如果现在是先给个用这种方法加密的固件出来,我想就不会有人轻易下结论了。如果是inline函数并上去的话,那么有个小问题就是代码量会超大。
楼主要研究软件的加密算法,建议先去学习一下现在windows下一般应用软件加壳的各种原理,唯一ID在这个领域是完全不新鲜的一个东西,最常见的就是软件根据CPU、硬盘或网卡的MAC来生成一个所谓硬件ID让用户注册。 而算法加密更是五花八门,除了加密条件判断外,还有代码的动态解码,就是用正确的KEY来解密函数A的代码,再跳过去执行,下次解码函数B时又会覆盖函数A的空间等等。 还有虚拟机加密,把一段x86代码转换为MIPS代码,在虚拟机中运行,这样如果破解不知道虚拟机模拟的是哪种汇编指令的话,反编译就会很累,代价就是运行速度下降。
适合有很大rom的mcu 可以加入一些垃圾代码。读取硬件id或软件id的这两个点是爆破的主要地方。例如固件整体验证的就是硬件id,
就算自己编写编程器变换固件内的其它key位置等,
整个算法验证的还是当前的mcu的硬件id是不是与这个固件匹配只要找到读取这个id的地方补丁一下就完了。这个其实就类似与pc机上绑定机器的软件的加密时一样的。
你的方法必须保证你读唯一ID的行为不被破解者看出。像STM32的独立ID在某个固定地址,那么只要找出访问那个地址的语句就可以了。
现在有不少量产编程器都支持根据唯一ID变换一些数据写入指定地址,甚至支持自己编写变换插件,每个单片机的程序都不一样是完全可以做到的。
你算法设计的越复杂,如果不是用来直接保护你自己的利益,那么就是为他们谋福利了。
什么坚不可摧。专业的加密芯片都可以摆平。何况这玩意儿?
阅读(...) 评论()单片机答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机答案
上传于||文档简介
&&课​后​习​题​答​案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何让app控制一个单片机_百度知道}

我要回帖

更多关于 wasd和上下左右互换了 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信