找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4862|回复: 3
打印 上一主题 下一主题
收起左侧

stm32 BLCD FOC控制软件源码MC _KIT_20

[复制链接]
跳转到指定楼层
楼主
BLCD FOC控制 软件


stm32单片机源程序如下:
  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : main.c
  3. * Author             : IMS Systems Lab
  4. * Date First Issued  : 21/11/07
  5. * Description        : Main program body.
  6. ********************************************************************************
  7. * History:
  8. * 21/11/07 v1.0
  9. * 29/05/08 v2.0
  10. * 27/06/08 v2.0.1
  11. ********************************************************************************
  12. * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  13. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  14. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  15. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  16. * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  17. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  18. *
  19. * THIS SOURCE CODE IS PROTECTED BY A LICENSE.
  20. * FOR MORE INFORMATION PLEASE CAREFULLY READ THE LICENSE AGREEMENT FILE LOCATED
  21. * IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.
  22. *******************************************************************************/

  23. /* Includes ------------------------------------------------------------------*/
  24. #include "stm32f10x_lib.h"
  25. #include "stm32f10x_MClib.h"
  26. #include "MC_Globals.h"

  27. /* Private typedef -----------------------------------------------------------*/
  28. /* Private define ------------------------------------------------------------*/
  29. /* Private macro -------------------------------------------------------------*/
  30. /* Private variables ---------------------------------------------------------*/
  31. /* Private function prototypes -----------------------------------------------*/

  32. void NVIC_Configuration(void);
  33. void GPIO_Configuration(void);
  34. void RCC_Configuration(void);

  35. /*******************************************************************************
  36. * Function Name  : main
  37. * Description    : Main program.
  38. * Input          : None
  39. * Output         : None
  40. * Return         : None
  41. *******************************************************************************/
  42. int main(void)
  43. {
  44. #ifdef DEBUG
  45.   debug();
  46. #endif
  47.   
  48.   NVIC_Configuration();   
  49.   RCC_Configuration();
  50.   GPIO_Configuration();
  51.   
  52. #ifdef THREE_SHUNT  
  53.   SVPWM_3ShuntInit();
  54. #elif defined ICS_SENSORS
  55.   SVPWM_IcsInit();
  56. #elif defined SINGLE_SHUNT
  57.   SVPWM_1ShuntInit();
  58. #endif
  59.   
  60. #ifdef ENCODER
  61.    ENC_Init();
  62.    #ifdef OBSERVER_GAIN_TUNING
  63.       STO_StateObserverInterface_Init();
  64.       STO_Init();
  65.    #endif
  66. #elif defined HALL_SENSORS
  67.    HALL_HallTimerInit();
  68.    #ifdef OBSERVER_GAIN_TUNING
  69.       STO_StateObserverInterface_Init();
  70.       STO_Init();
  71.    #endif
  72. #elif defined NO_SPEED_SENSORS
  73.     STO_StateObserverInterface_Init();
  74.     STO_Init();
  75.    #ifdef VIEW_ENCODER_FEEDBACK
  76.       ENC_Init();
  77.    #elif defined VIEW_HALL_FEEDBACK
  78.       HALL_HallTimerInit();
  79.    #endif
  80. #endif

  81. #ifdef DAC_FUNCTIONALITY   
  82.   MCDAC_Init();
  83. #endif

  84.   TB_Init();
  85.   
  86.   PID_Init(&PID_Torque_InitStructure, &PID_Flux_InitStructure, &PID_Speed_InitStructure);

  87. #ifdef BRAKE_RESISTOR
  88.     MCL_Brake_Init();
  89. #endif
  90.       
  91.   KEYS_Init();
  92.   
  93.   /* TIM1 Counter Clock stopped when the core is halted */
  94.   DBGMCU_Config(DBGMCU_TIM1_STOP, ENABLE);
  95.   
  96.   // Init Bus voltage and Temperature average  
  97.   MCL_Init_Arrays();
  98.    
  99.   LCD_Init();
  100.   LCD_Clear(White);
  101.   LCD_SetTextColor(Blue);
  102.   LCD_SetBackColor(White);
  103.    
  104.   Display_Welcome_Message();
  105.    
  106.   while(1)
  107.   {
  108.     Display_LCD();
  109.     MCL_ChkPowerStage();   
  110.     //User interface management   
  111.     KEYS_process();  
  112.   
  113.     switch (State)
  114.     {
  115.       case IDLE:    // Idle state   
  116.       break;
  117.       
  118.       case INIT:
  119.         MCL_Init();
  120.         TB_Set_StartUp_Timeout(3000);
  121.         State = START;
  122.       break;
  123.         
  124.       case START:  
  125.       //passage to state RUN is performed by startup functions;
  126.       break;
  127.          
  128.       case RUN:   // motor running      
  129. #ifdef ENCODER
  130.         if(ENC_ErrorOnFeedback() == TRUE)
  131.         {
  132.           MCL_SetFault(SPEED_FEEDBACK);
  133.         }
  134. #elif defined HALL_SENSORS        
  135.         if(HALL_IsTimedOut())
  136.         {
  137.           MCL_SetFault(SPEED_FEEDBACK);
  138.         }
  139.         if (HALL_GetSpeed() == HALL_MAX_SPEED)
  140.         {
  141.           MCL_SetFault(SPEED_FEEDBACK);
  142.         }
  143. #elif defined NO_SPEED_SENSORS
  144.       
  145. #endif     
  146.       break;  
  147.       
  148.       case STOP:    // motor stopped
  149.           // shutdown power         
  150.           /* Main PWM Output Disable */
  151.           TIM_CtrlPWMOutputs(TIM1, DISABLE);
  152.          
  153.           State = WAIT;
  154.          
  155. #ifdef THREE_SHUNT         
  156.           SVPWM_3ShuntAdvCurrentReading(DISABLE);
  157. #endif   
  158. #ifdef SINGLE_SHUNT         
  159.           SVPWM_1ShuntAdvCurrentReading(DISABLE);
  160. #endif
  161.           Stat_Volt_alfa_beta.qV_Component1 = Stat_Volt_alfa_beta.qV_Component2 = 0;
  162.          
  163. #ifdef ICS_SENSORS
  164.           SVPWM_IcsCalcDutyCycles(Stat_Volt_alfa_beta);
  165. #elif defined THREE_SHUNT
  166.           SVPWM_3ShuntCalcDutyCycles(Stat_Volt_alfa_beta);
  167. #endif                                                
  168.           TB_Set_Delay_500us(2000); // 1 sec delay
  169.       break;
  170.       
  171.       case WAIT:    // wait state
  172.           if (TB_Delay_IsElapsed() == TRUE)
  173.           {
  174. #ifdef ENCODER            
  175.             if(ENC_Get_Mechanical_Speed() ==0)            
  176.             {              
  177.               State = IDLE;              
  178.             }
  179. #elif defined HALL_SENSORS      
  180.             if (HALL_IsTimedOut())
  181.             {               
  182.               State=IDLE;
  183.             }
  184. #elif defined NO_SPEED_SENSORS
  185.             STO_InitSpeedBuffer();
  186.             State=IDLE;
  187. #endif            
  188.           }
  189.         break;
  190.    
  191.       case FAULT:                  
  192.           if (MCL_ClearFault() == TRUE)
  193.           {
  194.             if(wGlobal_Flags & SPEED_CONTROL == SPEED_CONTROL)
  195.             {
  196.               bMenu_index = CONTROL_MODE_MENU_1;
  197.             }
  198.             else
  199.             {
  200.               bMenu_index = CONTROL_MODE_MENU_6;
  201.             }      
  202. #if defined NO_SPEED_SENSORS
  203.             STO_InitSpeedBuffer();
  204. #endif            
  205.             State = IDLE;
  206.             wGlobal_Flags |= FIRST_START;
  207.           }
  208.         break;
  209.    
  210.       default:        
  211.         break;
  212.     }
  213.   }
  214. }

  215. /*******************************************************************************
  216. * Function Name  : GPIO_Configuration
  217. * Description    : Configures the TIM1 Pins.
  218. * Input          : None
  219. * Output         : None
  220. * Return         : None
  221. *******************************************************************************/
  222. void GPIO_Configuration(void)
  223. {
  224.   GPIO_InitTypeDef GPIO_InitStructure;

  225.   /* Enable GPIOC clock */
  226.   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);

  227.   GPIO_DeInit(GPIOC);
  228.   GPIO_StructInit(&GPIO_InitStructure);
  229.                   
  230.   /* Configure PC.06, PC.07, PC.08 and PC.09 as Output push-pull for debugging
  231.      purposes */
  232.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
  233.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  234.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  235.   GPIO_Init(GPIOC, &GPIO_InitStructure);   
  236. }

  237. /*******************************************************************************
  238. * Function Name  : RCC_Configuration
  239. * Description    : Configures the different system clocks.
  240. * Input          : None
  241. * Output         : None
  242. * Return         : None
  243. *******************************************************************************/
  244. void RCC_Configuration(void)
  245. {
  246.   ErrorStatus HSEStartUpStatus;

  247.   /* RCC system reset(for debug purpose) */
  248.   RCC_DeInit();

  249.   /* Enable HSE */
  250.   RCC_HSEConfig(RCC_HSE_ON);

  251.   /* Wait till HSE is ready */
  252.   HSEStartUpStatus = RCC_WaitForHSEStartUp();
  253.   
  254.   if(HSEStartUpStatus == SUCCESS)
  255.   {
  256.     /* HCLK = SYSCLK */
  257.     RCC_HCLKConfig(RCC_SYSCLK_Div1);
  258.   
  259.     /* PCLK2 = HCLK */
  260.     RCC_PCLK2Config(RCC_HCLK_Div1);

  261.     /* PCLK1 = HCLK/2 */
  262.     RCC_PCLK1Config(RCC_HCLK_Div2);

  263.     /* Flash 2 wait state */
  264.     FLASH_SetLatency(FLASH_Latency_2);
  265.     /* Enable Prefetch Buffer */
  266.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  267.     /* PLLCLK = 8MHz * 9 = 72 MHz */
  268.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

  269.     /* Enable PLL */
  270.     RCC_PLLCmd(ENABLE);

  271.     /* Wait till PLL is ready */
  272.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  273.     {
  274.     }

  275.     /* Select PLL as system clock source */
  276.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

  277.     /* Wait till PLL is used as system clock source */
  278.     while(RCC_GetSYSCLKSource() != 0x08)
  279.     {
  280.     }
  281.   }
  282. }

  283. /*******************************************************************************
  284. * Function Name  : NVIC_Configuration
  285. * Description    : Configures the Vector Table base address.
  286. * Input          : None
  287. * Output         : None
  288. ……………………

  289. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
MC _KIT_20.zip (2.98 MB, 下载次数: 114)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:464271 发表于 2020-4-11 16:44 | 只看该作者
这个是完成的版本吗?
回复

使用道具 举报

板凳
ID:339854 发表于 2020-4-16 15:51 | 只看该作者
电机库也好意思发
回复

使用道具 举报

地板
ID:731074 发表于 2020-4-17 08:45 | 只看该作者
这是TI的还是ST
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表