STM32电机控制器小心得
首先声明的是本人刚刚大学毕业进入电机控制这个行业,以前在学校也做过类似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电机控制器小心得的更多相关文章
- ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 ...
- Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)
这几天工作中要用到Qt调用com组件,主要用到的类型有dll和ocx,使用他们的方法很简单:1.将com组件注册到系统中.2.使用Qt自带的工具dumpcpp将com组件生成cpp和头文件.3.然后就 ...
- 拼接Sql语句小心得
在往数据库插入数据时,需要根据数据和数据库中的列信息进行拼接,在本篇文章中,输出小心得.使用语言为 python. 拼接原始列信息 比如待插入数据库列信息为 deptNo,dName, Locate, ...
- BUI Webapp用于项目中的一点小心得
接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...
- RIME-使用小心得
从4月份我才接触到RIME输入法,当时的感觉上相见恨晚的,现在感觉也不错,时至今日,想写点东西,也算是小感触吧. RIME称为中州韵输入法引擎,是开放源代码的输入法软件,其主页是http://rime ...
- Unity仪表盘显示UGUI制作小心得
最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下: 1.仍然在模型下面新建Panel ...
- 学习KMP算法的一点小心得
KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n) ...
- 关于 angular 小心得
心得1: //控制器里面的代码会晚一些执行 setTimeout(function(){ //获取对象的scope var ele = document.querySelector('[ng-cont ...
- STM32单片机学习心得——概述
我校的课程真是跟不上时代发展,甚至还在教授8051/8052单片机的内容,于是不甘寂寞的我就自己踏入了STM32单片机的坑-- 首先,我现在大二,刚学完模拟电子技术,还没有学习数字电路技术,于是自学单 ...
随机推荐
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...
- httpCookie与Cookie安全
Web 应用程序使用的 Cookie 个人认为这里设置的cookie与访问cookie的安全性关联大一点,配置节如下 <httpCookies domain="String" ...
- MVC依赖性注入概述
MVC框架之所以如此受欢迎的原因之一就是它十分注意支持关注分离,使各个功能部件尽量能够相互独立.今天我们就来看看MVC4如何使用DI方法实现一些组件的独立,使本来结合紧密的部件,松耦合.我现在所说的对 ...
- 为什么volatile不能保证原子性而Atomic可以?
在上篇<非阻塞同步算法与CAS(Compare and Swap)无锁算法>中讲到在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值 ...
- Java中2+2==5解读
先来看一段程序,如下: package basic; import java.lang.reflect.Field; public class TestField { public static vo ...
- E - The Values You Can Make
E - The Values You Can Make Description Pari wants to buy an expensive chocolate from Arya. She has ...
- eclipse中怎么添加Hibernate tools
最近在学习Hibernate框架,但是用eclipse的时候发现自己安装的过程不是很顺利,因此记下来,供自己和别人参考. Hibernate Tools是由JBoss推出的一个Eclipse集成开发工 ...
- js严格模式总结
首先,我们要理解严格模式的概念,严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,病增强安全性.可以对部分函数进行执行严格模式,如: function func(){ 'us ...
- 关于在SharePoint 2013(2010)中Javascript如何实现批量批准的自定义操作功能?
1.概述: SharePoint 2013(包括SharePoint 2010)提供了很方便的,多选的界面,但是很多操作还是不能批量进行,比如:批准的功能.如果您要解决方案不关心代码,那么请直接联系作 ...
- Android开发学习——android体系结构
Android的体系结构采用了分层架构的思想, 从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核. 一 应用程序层 该层提供一些核心应用程序包,例 ...