首先声明的是本人刚刚大学毕业进入电机控制这个行业,以前在学校也做过类似51的实验,然而在工作中发现那些东西是皮毛的不能再皮毛,我现在在公司也算是一个实习生,主要工作是改各厂家对控制器的功能需求,(其实大多数功能都是前人做过的,我负责的还是移植为主),最近遇到一个程序个人觉得还是需要思考一下的,虽然是我们老大写的,但看懂,理解我觉得是非常有必要的。

先说一下该部分程序要实现的功能:当刹车,转把,霍尔故障时,点按修复进入修复状态,然后长按修复,低速行驶(个人觉得提出这个功能的厂家也是挺2的)。难点就在于一定要按第二下的时候才能修复,源程序如下:

{
static u8 fLastKeyRun = 1;
if (fGlobal_ShakeErr||fGlobal_HandleBarErr||fGlobal_HallorAngleErr)
{
if (fLastKeyRun == 0 && ( SW_KeyRun==1 ))
KeyFlag = 1;
}

if ((fLastKeyRun==0)&&(SW_KeyRun==0)&&KeyFlag)
{
if (fGlobal_ShakeErr||fGlobal_HandleBarErr)
fGlobal_KeyRun=1;
}
else
{
fGlobal_KeyRun=0;
}
fLastKeyRun = SW_KeyRun?1:0;
}

下面来对我老大写的这部分进行分析:将程序中四个变量化繁为简,分别为,a,,b,c,d,c定义在函数体外,故只在上电时执行一次,c=0,a定义 为静态变量,a的值初始化为1,将程序中四个条件判断分别代表为1,2,3,4 。(条件2中a=0,b=1 。 条件3中a=0,b=0,c=1)拔掉转把线,满足条件1,不满足条件2,不满足条件3,故电机不转,a=1,接 地时,b=0,不满足条件1,不满足条件2,故电机不转,a=0,悬空时,b=1,满足条件2,c=1,不满足条 件3,故不转,a=1,再接地,b=0,不满足条件2,不满足条件3,故不转,a=0,下一个周期时。满足条件3,电机低速转动。

我对静态变量的理解为只在程序上电时运行一次,可能有错误,希望看到的朋友指出。

STM32电机控制器小心得的更多相关文章

  1. ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)

    前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 ...

  2. Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)

    这几天工作中要用到Qt调用com组件,主要用到的类型有dll和ocx,使用他们的方法很简单:1.将com组件注册到系统中.2.使用Qt自带的工具dumpcpp将com组件生成cpp和头文件.3.然后就 ...

  3. 拼接Sql语句小心得

    在往数据库插入数据时,需要根据数据和数据库中的列信息进行拼接,在本篇文章中,输出小心得.使用语言为 python. 拼接原始列信息 比如待插入数据库列信息为 deptNo,dName, Locate, ...

  4. BUI Webapp用于项目中的一点小心得

    接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...

  5. RIME-使用小心得

    从4月份我才接触到RIME输入法,当时的感觉上相见恨晚的,现在感觉也不错,时至今日,想写点东西,也算是小感触吧. RIME称为中州韵输入法引擎,是开放源代码的输入法软件,其主页是http://rime ...

  6. Unity仪表盘显示UGUI制作小心得

    最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下: 1.仍然在模型下面新建Panel ...

  7. 学习KMP算法的一点小心得

    KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n) ...

  8. 关于 angular 小心得

    心得1: //控制器里面的代码会晚一些执行 setTimeout(function(){ //获取对象的scope var ele = document.querySelector('[ng-cont ...

  9. STM32单片机学习心得——概述

    我校的课程真是跟不上时代发展,甚至还在教授8051/8052单片机的内容,于是不甘寂寞的我就自己踏入了STM32单片机的坑-- 首先,我现在大二,刚学完模拟电子技术,还没有学习数字电路技术,于是自学单 ...

随机推荐

  1. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  2. 数三角形 bzoj 1201

    数三角形(1s 128MB)triangle [题目描述] 小苏看到一个这样的等边三角形:该等边三角形每边的长度为n且被分成n等份,于是每条边就有n-1个等分点.而整个三角形被连接两个不同边的等分点且 ...

  3. ExpandableListView实现展开更多和收起更多

    [需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...

  4. python征程2.0(python基础)

    1.python中有一些基本规则的特殊字符. (1)#表示这后的字符为python注释. (2)\n标准的行分隔符. (3)\继续上一行.(也就是过长的语句可以使用反斜杠(\)分解成几行) ) and ...

  5. 更新整理本人所有博文中提供的代码与工具(Java,2013.11)

    为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...

  6. maven 间接依赖的jar自动引入

    很多时候,我们引用的第三方jar需要一些其他的第三方jar,这个时候默认情况下,间接需要依赖的第三方jar是不会自动被引入的,如果希望这些额外的三方jar被自动引入,则在Maven仓库中除了提交jar ...

  7. 移动页面div居中效果代码

    在线查看效果:http://hovertree.com/texiao/mobile/4.htm 可用手机浏览器查看 以下为HTML文件: <!DOCTYPE html> <html& ...

  8. 【小贴士】【stringify神BUG】【localstorage失效】【消灭Safari alert框】【是否延迟加载】【页面10px白屏】

    前言 最近碰到几个恶心问题,也发现一点优化技巧,以及对Hybrid知识的一些整理,这里便一并拿出来做分享了,关于Hybrid的调试,会是我今后一个重点 我的博客首先是学习笔记,方便自己做知识沉淀,以后 ...

  9. JS中用new创建对象与不用new创建对象区别:

    function classA() { console.log(this); var that = this == window ? {} : this; that.name = "clas ...

  10. javascript的函数(二)

    1. 函数的作用域 作用域是指变量的存在的范围.javascript中有两种作用域,一种是全局作用域,变量在整个程序中一直存在,另一种是函数作用域,变量只存在于函数体内部.在函数体外部声明的变量就是全 ...