亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? stm32f10x_timebase.c

?? ARM_CORTEX-M3應(yīng)用實(shí)例開發(fā)詳解光盤
?? C
字號(hào):
/******************************************************************************
* 文件名      : stm32f10x_Timebase.c
* 功能描述  : 該程序主要用于處理時(shí)基,包括顯示和故障管理,速度調(diào)整等 
********************************************************************************

/* 頭文件 ------------------------------------------------------------------*/
#include "stm32f10x.h"

#include "stm32f10x_MClib.h"
#include "MC_Globals.h"
#include "stm32f10x_it.h"


#define TB_Prescaler_5ms    31    // ((31+1)*(9374+1)/60000000) sec -> 5 ms 
#define TB_AutoReload_5ms    9374

#define TB_Prescaler_500us    29    // ((29+1)*(999+1)/60000000) sec -> 500 us 
#define TB_AutoReload_500us    999

#define SYSTICK_PRE_EMPTION_PRIORITY 3
#define SYSTICK_SUB_PRIORITY 0

#define SPEED_SAMPLING_TIME   PID_SPEED_SAMPLING_TIME


static u16 hStart_Up_TimeLeft_500us =0;
static volatile u16 hTimebase_500us = 0;
static volatile u16 hTimebase_display_500us = 0;
static volatile u16 hKey_debounce_500us = 0;
volatile u8 bPID_Speed_Sampling_Time_500us = PID_SPEED_SAMPLING_TIME;
static u16 hSpeedMeas_Timebase_500us = SPEED_SAMPLING_TIME;

#ifdef FLUX_TORQUE_PIDs_TUNING  
static u16 hTorqueSwapping = SQUARE_WAVE_PERIOD; 
#endif
/*******************************************************************************
* 函數(shù)名  : TB_Init
* 功能描述   : 時(shí)基外設(shè)初始化. 時(shí)基->500usec,使能相關(guān)中斷   
* 輸入       : 無
* 輸出       : 無
* 返回       : 無
*******************************************************************************/
void TB_Init(void)
{   
   u32 SysTick_Prio;
  /* 選AHB時(shí)鐘(HCLK)作為SysTick時(shí)鐘源*/
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
  /* SysTick 第500usec中斷一次 */
//  SysTick_SetReload(36000);
  /* Enable SysTick Counter */
//  SysTick_CounterCmd(SysTick_Counter_Enable);
  if (SysTick_Config(36000))
  { 
    /* Capture error */ 
    while (1);
  }

//  NVIC_SystemHandlerPriorityConfig(SysTick_IRQn, 
//                            SYSTICK_PRE_EMPTION_PRIORITY, SYSTICK_SUB_PRIORITY); 


    SysTick_Prio = NVIC_EncodePriority(	NVIC_GetPriorityGrouping(), SYSTICK_PRE_EMPTION_PRIORITY, SYSTICK_SUB_PRIORITY);

    NVIC_SetPriority(SysTick_IRQn, SysTick_Prio);


  /* Enable SysTick interrupt */
//  NVIC_EnableIRQ(SysTick_IRQn);
//  SysTick_ITConfig(ENABLE);


    /* Setup SysTick Timer for 1 msec interrupts  */


}

/*******************************************************************************
* 函數(shù)名  : TB_Wait
* 功能描述    : The function wait for a delay to be over.   
* 輸入          : 無
* 輸出        : 無
* 返回         : 無
*******************************************************************************/
void TB_Wait(u16 time)
{
hTimebase_500us = time;    /*延時(shí)*/
while (hTimebase_500us != 0) /*等待*/
{}  

}

/*******************************************************************************
* 函數(shù)名  : TB_Set_Delay_500us
* 功能描述    : 設(shè)置狀態(tài)機(jī)延時(shí)  
* 輸入        : 延時(shí)值
* 輸出        : 無
* 返回        : 無
*******************************************************************************/
void TB_Set_Delay_500us(u16 hDelay)
{
  hTimebase_500us = hDelay;
}  

/*******************************************************************************
* 函數(shù)名  : TB_Delay_IsElapsed
* 功能描述    : 檢查TB_Set_Delay_500us   
* 輸入        : 無
* 輸出        : 如果延時(shí)返回真,否則為假
* 返回        : 無
*******************************************************************************/
bool TB_Delay_IsElapsed(void)
{
 if (hTimebase_500us == 0)
 {
   return (TRUE);
 }
 else 
 {
   return (FALSE);
 }
}  

/*******************************************************************************
* 函數(shù)名  : TB_Set_DisplayDelay_500us
* 功能描述    : Set Delay utilized by MC_Display.c module.   
* 輸入        : Time out value
* 輸出        : 無
* 返回        : 無
*******************************************************************************/
void TB_Set_DisplayDelay_500us(u16 hDelay)
{
  hTimebase_display_500us = hDelay;
}  

/*******************************************************************************
* 函數(shù)名  : TB_DisplayDelay_IsElapsed
* 功能描述    : Check if the delay set by TB_Set_DisplayDelay_500us is elapsed.   
* 輸入          : 無
* 輸出        : True if delay is elapsed, false otherwise 
* 返回         : 無
*******************************************************************************/
bool TB_DisplayDelay_IsElapsed(void)
{
 if (hTimebase_display_500us == 0)
 {
   return (TRUE);
 }
 else 
 {
   return (FALSE);
 }
} 

/*******************************************************************************
* 函數(shù)名  : TB_Set_DebounceDelay_500us
* 功能描述    : Set Delay utilized by MC_Display.c module.   
* 輸入          : Time out value
* 輸出        : 無
* 返回         : 無
*******************************************************************************/
void TB_Set_DebounceDelay_500us(u8 hDelay)
{
  hKey_debounce_500us = hDelay;
}  

/*******************************************************************************
* 函數(shù)名  : TB_DebounceDelay_IsElapsed
* 功能描述    : Check if the delay set by TB_Set_DebounceDelay_500us is elapsed.   
* 輸入          : 無
* 輸出        : True if delay is elapsed, false otherwise 
* 返回         : 無
*******************************************************************************/
bool TB_DebounceDelay_IsElapsed(void)
{
 if (hKey_debounce_500us == 0)
 {
   return (TRUE);
 }
 else 
 {
   return (FALSE);
 }
} 

/*******************************************************************************
* 函數(shù)名  : TB_Set_StartUp_Timeout(STARTUP_TIMEOUT)
* 功能描述    : Set Start up time out and initialize Start_up torque in  
*                  torque control.   
* 輸入          : Time out value
* 輸出        : 無
* 返回         : 無
*******************************************************************************/
void TB_Set_StartUp_Timeout(u16 hTimeout)
{
  hStart_Up_TimeLeft_500us = 2*hTimeout;  
}  

/*******************************************************************************
* 函數(shù)名  : TB_StartUp_Timeout_IsElapsed
* 功能描述    : Set Start up time out.   
* 輸入          : 無
* 輸出        : True if start up time out is elapsed, false otherwise 
* 返回         : 無
*******************************************************************************/
bool TB_StartUp_Timeout_IsElapsed(void)
{
 if (hStart_Up_TimeLeft_500us == 0)
 {
   return (TRUE);
 }
 else 
 {
   return (FALSE);
 }
} 


/*******************************************************************************
* 函數(shù)名  : SysTickHandler
* 功能描述    :  SysTick處理即系統(tǒng)嘀答處理。
* 輸入        : 無
* 輸出        : 無 
* 返回        : 無
*******************************************************************************/
void SysTick_Handler(void)
{ 
  if (hTimebase_500us != 0)  
  {
    hTimebase_500us --;
  }
  
  if (hTimebase_display_500us != 0)  
  {
    hTimebase_display_500us --;
  }
  
  if (hKey_debounce_500us != 0)  
  {
    hKey_debounce_500us --;
  }

  if (hStart_Up_TimeLeft_500us != 0)
  {
    hStart_Up_TimeLeft_500us--;
  }
 
/*每個(gè)FLUX_TORQUE_PIDs_TUNING時(shí)間周期轉(zhuǎn)矩參考值正
負(fù)反轉(zhuǎn)一次,從而模擬一次階躍響應(yīng)過程 */

#ifdef FLUX_TORQUE_PIDs_TUNING  
  if (State == RUN) 
  {
    if (hTorqueSwapping!=0)
    {
      hTorqueSwapping--;
    }
    else
    {
      hTorqueSwapping = SQUARE_WAVE_PERIOD;
      hTorque_Reference = - hTorque_Reference;
    }  
  }
#endif
 
  if (hSpeedMeas_Timebase_500us !=0)  //平均速度檢測時(shí)間周期到。
  {									  //這個(gè)周期只是檢測使用ENC或者
    hSpeedMeas_Timebase_500us--;	  //STO時(shí),使用HALL不在這里計(jì)算。
  }									  //而是在TIMER2計(jì)數(shù)器中斷里計(jì)算SPEED.
  else
  {
    hSpeedMeas_Timebase_500us = SPEED_SAMPLING_TIME;
    
    #ifdef ENCODER
      //ENC_Calc_Average_Speed must be called ONLY every SPEED_MEAS_TIMEBASE ms
      ENC_Calc_Average_Speed();
      #ifdef OBSERVER_GAIN_TUNING
      STO_Calc_Speed();   
      STO_Obs_Gains_Update();
      #endif
    #elif (defined HALL_SENSORS && defined OBSERVER_GAIN_TUNING)
      STO_Calc_Speed();      
      STO_Obs_Gains_Update();
    #elif defined NO_SPEED_SENSORS
      STO_Calc_Speed();
      #ifdef OBSERVER_GAIN_TUNING 
      STO_Obs_Gains_Update();
      #endif
      if (State == RUN)
      {        
        if(STO_Check_Speed_Reliability()==FALSE)
        {
          MCL_SetFault(SPEED_FEEDBACK);	   //速度反饋故障,停機(jī)。
        }    
      }
      #ifdef VIEW_ENCODER_FEEDBACK
      //ENC_Calc_Average_Speed must be called ONLY every SPEED_MEAS_TIMEBASE ms
      ENC_Calc_Average_Speed();
      #endif
    #endif
      
    #ifdef DAC_FUNCTIONALITY
      #if (defined ENCODER || defined VIEW_ENCODER_FEEDBACK)
      MCDAC_Update_Value(SENS_SPEED,(s16)(ENC_Get_Mechanical_Speed()*250));
      #elif (defined HALL_SENSORS || defined VIEW_HALL_FEEDBACK)
      MCDAC_Update_Value(SENS_SPEED,(s16)(HALL_GetSpeed()*250));
      #endif
      #if (defined NO_SPEED_SENSORS || defined OBSERVER_GAIN_TUNING)
      MCDAC_Update_Value(LO_SPEED,(s16)(STO_Get_Speed()*250));
      #endif
    #endif      
  }

  
  if (bPID_Speed_Sampling_Time_500us != 0 )   // 對(duì)速度或扭距的修正周期到。
  {
    bPID_Speed_Sampling_Time_500us --;
  }
  else
  { 
    bPID_Speed_Sampling_Time_500us = PID_SPEED_SAMPLING_TIME;    // 每2ms一次    
    if ((wGlobal_Flags & SPEED_CONTROL) == SPEED_CONTROL) //速度控制
    {
      if (State == RUN) 
      {
#ifdef HALL_SENSORS
        if (HALL_GetSpeed() == HALL_MAX_SPEED)
        {
          MCL_SetFault(SPEED_FEEDBACK);
        }											  
#endif        
// 不同速度模式下,使用不同的PID參數(shù)。
//        PID_Speed_Coefficients_update(GET_SPEED_0_1HZ, &PID_Speed_InitStructure);
        FOC_CalcFluxTorqueRef();   //系統(tǒng)每PID_SPEED_SAMPLING_TIME時(shí)間修正一次速度或者扭矩值。     
      }
    }
    else  // 扭矩控制
    {
      if (State == RUN)
      {
        FOC_TorqueCtrl();	 //系統(tǒng)每PID_SPEED_SAMPLING_TIME時(shí)間修正一次速度或者扭矩值。
      }
    }
  }
}

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产第一综合99久久| 亚洲精品成人少妇| 9人人澡人人爽人人精品| 艳妇臀荡乳欲伦亚洲一区| 在线不卡欧美精品一区二区三区| 秋霞影院一区二区| 国产精品乱码一区二区三区软件| 欧美久久一二区| 国产成人午夜精品影院观看视频| 一区二区免费在线播放| 欧美性猛片xxxx免费看久爱| 日欧美一区二区| 国产精品毛片高清在线完整版| 欧美三级中文字幕在线观看| 国产真实乱对白精彩久久| 亚洲精品五月天| 2021国产精品久久精品| 欧美在线视频全部完| 麻豆精品在线观看| 夜夜揉揉日日人人青青一国产精品| 欧美美女直播网站| 色综合久久久久综合体桃花网| 麻豆精品国产91久久久久久| 国产精品网站导航| 欧美蜜桃一区二区三区| 色综合亚洲欧洲| 激情偷乱视频一区二区三区| 亚洲aⅴ怡春院| 国产精品三级av| 欧美成人三级在线| 欧美人体做爰大胆视频| 色婷婷综合激情| 国产成人精品综合在线观看 | 91高清视频在线| 国产精品 欧美精品| 久久99精品国产.久久久久久| 亚洲国产成人av网| 亚洲精品日韩综合观看成人91| 久久精品日产第一区二区三区高清版 | 国产精品免费av| 久久精品一区二区三区不卡牛牛 | 麻豆一区二区三| 免费在线看一区| 精品一区二区三区免费播放| 精品系列免费在线观看| 国产一区二区久久| 成人免费看视频| 成人黄色小视频在线观看| 波多野结衣欧美| 91麻豆免费视频| 欧美系列亚洲系列| 777久久久精品| 26uuu欧美日本| 国产精品久久久久天堂| 一区二区三区蜜桃网| 亚洲1区2区3区视频| 久久国产精品72免费观看| 国产精品99久久久久久宅男| 成人av网站在线观看免费| 色欧美88888久久久久久影院| 欧美日精品一区视频| 日韩三级视频在线看| 国产欧美日韩综合精品一区二区| 综合自拍亚洲综合图不卡区| 亚洲高清一区二区三区| 激情综合网激情| 不卡大黄网站免费看| 欧美午夜精品一区| 日韩欧美国产系列| 中文字幕不卡的av| 亚洲国产视频a| 精品一区中文字幕| 色欧美片视频在线观看在线视频| 91精品一区二区三区在线观看| 国产亚洲成年网址在线观看| 亚洲黄色免费网站| 精品亚洲aⅴ乱码一区二区三区| 成人国产精品免费观看| 欧美日韩国产精选| 国产无遮挡一区二区三区毛片日本| 亚洲欧洲www| 六月丁香婷婷久久| 色综合天天综合网天天看片| 日韩欧美一区二区视频| 亚洲免费在线视频一区 二区| 麻豆精品在线播放| 色av成人天堂桃色av| 欧美精品一区二区久久婷婷| 亚洲一区二区偷拍精品| 国产馆精品极品| 69堂成人精品免费视频| 国产精品国模大尺度视频| 日本视频免费一区| 色综合久久综合网欧美综合网| 欧美成人艳星乳罩| 亚洲高清免费视频| 成人开心网精品视频| 精品国产亚洲一区二区三区在线观看| 一区二区三区在线视频免费| 国产一区二区三区国产| 欧美精选在线播放| 亚洲伦理在线免费看| 国产成人一区二区精品非洲| 欧美一区二区三区四区在线观看 | 欧美精品一卡二卡| 专区另类欧美日韩| 国产成人在线电影| 欧美成人官网二区| 丝袜美腿一区二区三区| 欧美伊人久久大香线蕉综合69| 中文成人综合网| 国产东北露脸精品视频| 精品国产免费一区二区三区四区| 亚洲成av人片在线观看无码| 波多野结衣精品在线| 亚洲国产精品成人综合| 国内成人自拍视频| 精品欧美一区二区三区精品久久 | 国产精品视频看| 精品一区二区三区视频在线观看| 欧美日韩二区三区| 亚洲制服丝袜在线| 在线欧美小视频| 亚洲精品国产无天堂网2021| 国产.欧美.日韩| 久久尤物电影视频在线观看| 另类中文字幕网| 欧美电视剧在线看免费| 老色鬼精品视频在线观看播放| 91精品国产综合久久精品图片| 亚洲二区在线观看| 欧美日韩在线不卡| 亚洲国产精品视频| 欧美另类高清zo欧美| 石原莉奈一区二区三区在线观看| 欧美丰满少妇xxxbbb| 午夜电影网一区| 777午夜精品免费视频| 人禽交欧美网站| 精品日韩在线观看| 国产精品一区2区| 国产色一区二区| 91片黄在线观看| 亚洲视频在线一区观看| 91国偷自产一区二区开放时间| 一区二区三区久久久| 欧美日韩在线播放一区| 日本欧美肥老太交大片| 日韩精品一区二区在线观看| 国产精品一区二区久激情瑜伽| 欧美国产成人精品| 色综合一个色综合亚洲| 午夜精品久久久久久久久| 欧美mv日韩mv亚洲| 高清免费成人av| 亚洲欧美日韩在线| 777久久久精品| 国产一区 二区| 亚洲精品成人精品456| 欧美精品第1页| 国产在线视频一区二区| 国产精品久久二区二区| 欧美日韩亚洲综合一区二区三区| 麻豆精品视频在线| 中文字幕一区二区三区蜜月| 欧美日韩精品三区| 久久电影网站中文字幕| 国产免费观看久久| 欧美性做爰猛烈叫床潮| 久久精品国产第一区二区三区| 国产免费观看久久| 欧美喷水一区二区| 国产一区 二区| 亚洲一区在线观看免费观看电影高清| 日韩欧美一区二区视频| 不卡欧美aaaaa| 人妖欧美一区二区| 国产精品国产精品国产专区不蜜| 欧美无砖专区一中文字| 国内一区二区在线| 夜夜嗨av一区二区三区中文字幕| 精品久久国产老人久久综合| 91麻豆福利精品推荐| 久久国产精品无码网站| 亚洲美女免费视频| 精品国产乱码久久久久久久久| 91蜜桃传媒精品久久久一区二区| 奇米色777欧美一区二区| 亚洲欧美一区二区三区孕妇| 精品三级av在线| 欧美日韩三级一区二区| av在线不卡电影| 九色综合狠狠综合久久| 亚洲最新在线观看| 国产欧美一区在线| 777a∨成人精品桃花网| 成人av网站免费| 国产精品亚洲一区二区三区在线| 亚洲bdsm女犯bdsm网站| 亚洲欧美成aⅴ人在线观看|