標題: 電賽源碼資料:STM32風力擺 [打印本頁]

作者: talerrr    時間: 2018-1-15 14:12
標題: 電賽源碼資料:STM32風力擺
風力擺代碼,直接用

單片機源程序如下:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2013,山外科技
  4. *     All rights reserved.

  5. *     除注明出處外,以下所有內(nèi)容版權(quán)均屬山外科技所有,未經(jīng)允許,不得用于商業(yè)用途,
  6. *     修改內(nèi)容時必須保留山外科技的版權(quán)聲明。
  7. *
  8. * @file       main.c
  9. * @brief      山外KL26 平臺主程序
  10. * @author     山外科技
  11. * @version    v5.2
  12. * @date       2014-10-26
  13. */

  14. #include "common.h"
  15. #include "include.h"

  16. #define MOTOR_HZ    (20*1000)

  17. #define XOUT    ADC0_SE9
  18. #define YOUT    ADC0_SE13
  19. #define ZOUT    ADC0_SE15
  20. #define Gyro1   ADC0_SE14
  21. #define Gyro2   ADC0_SE12
  22. #define Ang     ADC0_SE11
  23. Site_t site_lcd;
  24. uint16 x,y,z,gyro1,gyro2,ang;                           //保存ADC轉(zhuǎn)換結(jié)果

  25. //子函數(shù)聲明
  26. void LCD_show_int();//LCD顯示字符
  27. void PIT_IRQHandler(void);//中斷函數(shù)
  28. void move();//移動

  29. void main()
  30. {

  31.         //陀螺儀初始化
  32.     adc_init(XOUT);
  33.     adc_init(YOUT);
  34.     adc_init(ZOUT);
  35.     adc_init(Gyro2);         //角加速度  Angular2
  36.     adc_init(Gyro1);         //角加速度  Angular1
  37.     adc_init(Ang);
  38.         
  39.         //LCD初始化
  40.     LCD_init();               
  41.         LCD_show_int();        
  42.         
  43.         //初始化 電機 PWM
  44.     tpm_pwm_init(TPM0, TPM_CH0,MOTOR_HZ,100);
  45.     tpm_pwm_init(TPM0, TPM_CH1,MOTOR_HZ,100);
  46.     tpm_pwm_init(TPM0, TPM_CH4,MOTOR_HZ,100);
  47.     tpm_pwm_init(TPM0, TPM_CH5,MOTOR_HZ,100);
  48.     gpio_init(PTC12,GPO,0);
  49.         
  50. /********************************開PIT中斷******************************/
  51.         pit_init_ms(PIT0, 10);                                //初始化PIT0,定時時間為: ??ms
  52.         
  53.     set_vector_handler(PIT_VECTORn ,PIT_IRQHandler);       //設(shè)置PIT0的中斷服務(wù)函數(shù)為 PIT_IRQHandler
  54.     enable_irq (PIT_IRQn);                                 //使能PIT0中斷

  55.     while(1)
  56.     {
  57.         site_lcd.x = 24;
  58.         site_lcd.y = 2;

  59.         x = adc_once(XOUT,ADC_8bit);
  60.         LCD_num_C (site_lcd, x , FCOLOUR , BCOLOUR);
  61.                
  62.         site_lcd.y += 15;
  63.                 y = adc_once(YOUT,ADC_8bit);
  64.         LCD_num_C (site_lcd, y , FCOLOUR , BCOLOUR);
  65.                
  66.         site_lcd.y += 15;
  67.         z = adc_once(ZOUT,ADC_8bit);
  68.         LCD_num_C (site_lcd, z , FCOLOUR , BCOLOUR);
  69.                
  70.         site_lcd.y += 15;
  71.         gyro1 = adc_once(Gyro1,ADC_8bit);
  72.         LCD_num_C (site_lcd, gyro1 , FCOLOUR , BCOLOUR);
  73.                
  74.         site_lcd.y += 15;
  75.         gyro2 = adc_once(Gyro2,ADC_8bit);
  76.         LCD_num_C (site_lcd, gyro2 , FCOLOUR , BCOLOUR);
  77.                
  78.         site_lcd.y += 15;
  79.         ang = adc_once(Ang,ADC_8bit);
  80.         LCD_num_C (site_lcd, ang , FCOLOUR , BCOLOUR);
  81.     }

  82. }

  83. /******************************LCD初始化****************************/
  84. void LCD_show_int()
  85. {
  86.         LCD_init();
  87.         site_lcd.x = 0;
  88.         site_lcd.y = 2;  
  89.         LCD_str(site_lcd, "X", BLUE, GREEN);
  90.         site_lcd.y = 17;
  91.         LCD_str(site_lcd, "Y", BLUE, GREEN);
  92.         site_lcd.y = 32;
  93.         LCD_str(site_lcd, "Z", BLUE, GREEN);
  94.         site_lcd.y = 47;
  95.         LCD_str(site_lcd, "G1", BLUE, GREEN);
  96.         site_lcd.y = 62;
  97.         LCD_str(site_lcd, "G2", BLUE, GREEN);
  98.         site_lcd.y = 77;
  99.         LCD_str(site_lcd, "A", BLUE, GREEN);  
  100.         site_lcd.y = 92;
  101.         LCD_str(site_lcd, "k", BLUE, GREEN);
  102.         site_lcd.y = 107;
  103.         LCD_str(site_lcd, "dp", BLUE, GREEN);
  104.         site_lcd.x=68;
  105.         site_lcd.y = 2;  
  106.         LCD_str(site_lcd, "wp", BLUE, GREEN);//位置PD
  107.         site_lcd.y = 17;
  108.         LCD_str(site_lcd, "wd", BLUE, GREEN);
  109.         site_lcd.y = 32;
  110.         LCD_str(site_lcd, "zl", BLUE, GREEN);//速度
  111.         site_lcd.y = 47;
  112.         LCD_str(site_lcd, "sp", BLUE, GREEN);
  113.         site_lcd.y = 62;
  114.         LCD_str(site_lcd, "h1", BLUE, GREEN);//環(huán)島
  115.         site_lcd.y = 77;
  116.         LCD_str(site_lcd, "h2", BLUE, GREEN);
  117.         site_lcd.y = 92;
  118.         LCD_str(site_lcd, "h3", BLUE, GREEN);
  119.         site_lcd.y = 107;
  120.         LCD_str(site_lcd, "D", BLUE, GREEN);
  121. }

  122. void PIT_IRQHandler(void)
  123. {
  124.     //PIT0 和 PIT1 共用相同中斷號,所以兩者都共用相同中斷函數(shù),需要根據(jù)標志位來判斷是由哪個PIT觸發(fā)中斷

  125.     if(PIT_TFLG(PIT0) == 1 )        //判斷是否 PIT0 進入中斷
  126.     {
  127.                 move();
  128.             PIT_Flag_Clear(PIT0);       //清中斷標志位
  129.     }
  130. }

  131. void move()
  132. {
  133.         tpm_pwm_duty(TPM0, TPM_CH0,70);
  134.     tpm_pwm_duty(TPM0, TPM_CH1,70);
  135.     tpm_pwm_duty(TPM0, TPM_CH4,70);
  136.     tpm_pwm_duty(TPM0, TPM_CH5,70);
  137. }
復(fù)制代碼

所有資料51hei提供下載:
風力擺.rar (854.08 KB, 下載次數(shù): 37)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1