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单片机的坑-- 首先,我现在大二,刚学完模拟电子技术,还没有学习数字电路技术,于是自学单 ...
随机推荐
- VS2012 C#使用/配置Log4Net
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节探讨如何在VS2012中使用Log4Net 1. ...
- ADO.net数据绑定
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...
- 引用js实现checkbox批量选中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ReactNative——打包发布
1.生成一个签名密钥 ‘ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -k ...
- css基本知识框架图
css基本知识框架:(一:基本知识缩影.二基本知识框架图) 1.css样式表的基本概念 2.样式表基本类型-----1.内嵌样式 2.内联样式3.链入外部样式表4.导入外部样式 3.样式表配置方法 4 ...
- ABP使用及框架解析系列 - [Unit of Work part.1-概念及使用]
前言 ABP ABP是“ASP.NET Boilerplate Project”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开 ...
- 一款简洁大气的jquery日期日历插件
本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址:http://keleyi.com/a/bjad/em ...
- 使用原生JS封装一个ajax
function ajax(data){ //第一步,创建XHR对象 var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpReque ...
- iOS UIScrollView的使用
一.为什么要用UIScrollView? 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容普通的UIVie ...
- Android APP性能分析方法及工具
近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...