GithubHelp home page GithubHelp logo

4demo_motor_pmsm's Introduction

motor_pmsm

stm32 #include "GrayConversion.h"

typedef enum { false = 0, true = !false }ubool; /**

  • 二进制转换成格雷码
  • @param lStart lValue所在区间下界
  • @param lEnd lValue所在区间上界
  • @param lValue 要转换的二进制数的实值
  • @return 返回格雷码对应的二进制数的实值
  • @see g2b() g2b 格雷码转换二进制
  • @useage a=b2g(0,15,4); //取得4所对应格雷码的二进制值 结果a等于6
  • @memo lValue的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区间越小,求得结
  •   果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart为0.
    

*/ unsigned int b2g(unsigned int lStart,unsigned int lEnd,unsigned int lValue) { unsigned int Start=lStart,End=lEnd,Temp=0,Counter=0; ubool Type = true;

while(Start<End){
	Temp=(End+Start-1)>>1;
	if(lValue<=Temp){
		if(!Type)
			Counter+=((End-Start+1)>>1);
		End=Temp;
		Type=true;
	}
	else{
		if(Type)
			Counter+=((End-Start+1)>>1);
		Start=++Temp;
		Type=false;
	}
}
return Counter;

} /**

  • 格雷码转换成二进制
  • @param lStart lValue对应二进制数所在区间下界
  • @param lEnd lValue对应二进制数所在区间上界
  • @param lValue 要转换的格雷码的实值
  • @return 返回二进制数对应的格雷码的实值
  • @see b2g() b2g 二进制转换格雷码
  • @useage a=b2g(0,15,6);//取得6所对应二进制值的格雷码 结果a等于4
  • @memo lValue对应二进制数的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区
  •   间越小,求得结果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart为0.
    

*/ unsigned int g2b(unsigned int lStart,unsigned int lEnd,unsigned int lValue) { unsigned int Start=lStart,End=lEnd,Counter=0,Temp=0; ubool Type=true;

while(Start<End){
	Temp=Counter+((End-Start+1)>>1);
	if(Type^(lValue<Temp)){
		if(Type)
			Counter=Temp;
		Start=(Start+End+1)>>1;
		Type=false;
	}
	else{
		if(!Type)
			Counter=Temp;
		End=(Start+End-1)>>1;
		Type=true;
	}
}
return Start;

}

/**


  • @file Templates/Src/stm32f4xx_it.c
  • @author MCD Application Team
  • @version V1.2.1
  • @date 13-March-2015
  • @brief Main Interrupt Service Routines.
  •      This file provides template for all exceptions handler and 
    
  •      peripherals interrupt service routine.
    

  • @attention
  • © COPYRIGHT(c) 2015 STMicroelectronics

  • Redistribution and use in source and binary forms, with or without modification,
  • are permitted provided that the following conditions are met:
    1. Redistributions of source code must retain the above copyright notice,
  •  this list of conditions and the following disclaimer.
    
    1. Redistributions in binary form must reproduce the above copyright notice,
  •  this list of conditions and the following disclaimer in the documentation
    
  •  and/or other materials provided with the distribution.
    
    1. Neither the name of STMicroelectronics nor the names of its contributors
  •  may be used to endorse or promote products derived from this software
    
  •  without specific prior written permission.
    
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  • AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  • IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  • DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  • FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  • DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  • SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  • CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  • OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  • OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

/* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f4xx_it.h"

/** @addtogroup STM32F4xx_HAL_Examples

  • @{ */

/** @addtogroup Templates

  • @{ */

/* Private typedef -----------------------------------------------------------/ / Private define ------------------------------------------------------------/ / Private macro -------------------------------------------------------------/ / Private variables ---------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------/ / Private functions ---------------------------------------------------------*/

// / Cortex-M4 Processor Exceptions Handlers / //

/**

  • @brief This function handles NMI exception.
  • @param None
  • @retval None */ void NMI_Handler(void) { }

/**

  • @brief This function handles Hard Fault exception.
  • @param None
  • @retval None / void HardFault_Handler(void) { / Go to infinite loop when Hard Fault exception occurs */ while (1) { } }

/**

  • @brief This function handles Memory Manage exception.
  • @param None
  • @retval None / void MemManage_Handler(void) { / Go to infinite loop when Memory Manage exception occurs */ while (1) { } }

/**

  • @brief This function handles Bus Fault exception.
  • @param None
  • @retval None / void BusFault_Handler(void) { / Go to infinite loop when Bus Fault exception occurs */ while (1) { } }

/**

  • @brief This function handles Usage Fault exception.
  • @param None
  • @retval None / void UsageFault_Handler(void) { / Go to infinite loop when Usage Fault exception occurs */ while (1) { } }

/**

  • @brief This function handles SVCall exception.
  • @param None
  • @retval None */ void SVC_Handler(void) { }

/**

  • @brief This function handles Debug Monitor exception.
  • @param None
  • @retval None */ void DebugMon_Handler(void) { }

/**

  • @brief This function handles PendSVC exception.
  • @param None
  • @retval None */ void PendSV_Handler(void) { }

/**

  • @brief This function handles SysTick Handler.
  • @param None
  • @retval None */ void SysTick_Handler(void) { HAL_IncTick(); }

// / STM32F4xx Peripherals Interrupt Handlers / / Add here the Interrupt Handler for the used peripheral(s) (PPP), for the / / available peripheral interrupt handler's name please refer to the startup / / file (startup_stm32f4xx.s). / //

/**

  • @brief This function handles PPP interrupt request.
  • @param None
  • @retval None */ /void PPP_IRQHandler(void) { }/

/**

  • @} */

/**

  • @} */

/************************ (C) COPYRIGHT STMicroelectronics *END OF FILE/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.