找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3254|回复: 0
收起左侧

十三届恩智浦智能车双车程序

[复制链接]
ID:329533 发表于 2020-1-10 14:16 | 显示全部楼层 |阅读模式
单片机源程序如下:
  1. // ************************Declaration***************************************//
  2. // File name:        Main
  3. // Author:           Sat_Madman                                             //
  4. // Date:             2015/3/31 0:14:22                                    //
  5. // Version Number:   1.0                                                     //
  6. // Abstract:
  7. //   Freescale source
  8. // Modification history:[including time, version, author and abstract]        //
  9. // 2015/3/31 0:14:22         version 1.0     xxx                                //
  10. // Abstract: Main()                                                          //
  11. // SystemClock = 180Mhz    (修改路径 Chip -> system_MK60DZ10.c -> pllinit();  //
  12. // *********************************end************************************** //

  13. #include    "common.h"
  14. #include    "include.h"
  15. #include    "math.h"
  16. #include    "stdlib.h"


  17. // ***************define*****************//
  18. #define INT_COUNT  0xFFFF          //LPT 产生中断的计数次数
  19. #define DMASTATE   1             //0 关闭  1 打开

  20. CommunicationDeal PrintBuf;

  21. // ***************declare*****************//
  22. extern char    flag;
  23. extern int    RecNum[2];
  24. extern float   Angle_P ;        //舵机P参数 Debu8ig
  25. extern float   Angle_D ;        //舵机D参数 Debug
  26. extern int    AD[6];                //AD采集处理后的值
  27. extern char   position;
  28. uint32        LutraDistance;
  29. extern char    LutraConFlag;

  30. void SystemInit(void);
  31. void Delay(void);

  32. // ***************code*******************//

  33. void main()
  34. {

  35.     SystemInit();
  36.     PrintBuf.start = 's';
  37.     PrintBuf.position = '1';
  38.     memcpy(PrintBuf.SpeedData, "123", 3);
  39.     memcpy(PrintBuf.distance, "2341", 4);
  40.     memcpy(PrintBuf.end,"d\n" ,2);

  41.     EnableInterrupts;


  42.     OLED_Print(20,0,"By Madman");
  43.     OLED_Print(5,2,"L1:");
  44.     OLED_Print(60,2,"L2:");
  45.     OLED_Print(5,4,"R1:");
  46.     OLED_Print(60,4,"R2:");
  47.     OLED_Print(5,6,"F1:");
  48.     OLED_Print(60,6,"F2:");
  49. //    MotoGoLeft(3000)
  50. //    MotoGoRight(3000)

  51.     while(1)
  52.     {
  53.         if(flag == 1)
  54.         {
  55.             printf(" %d %d " ,RecNum[0] , RecNum[1]);
  56.             Angle_P = (float)RecNum[0] / 1000.0;
  57.             Angle_D = (float)RecNum[1] / 1000.0;
  58.             OLED_DisNum(5 , 6 , RecNum[0] , 4);
  59.             OLED_DisNum(30 , 6 , RecNum[1] , 4);
  60.             RecNum[0] = 0;
  61.             RecNum[1] = 0;
  62.             flag = 0;
  63.         }
  64.         Delay();
  65. #if 1
  66.         if(position == 0)    OLED_Print(20,0,"ZHI");
  67.         else if(position == 1) OLED_Print(20,0,"ZUO");
  68.         else if(position == 3) OLED_Print(20,0,"RAM");
  69.         else   OLED_Print(20,0,"YOU");

  70.         OLED_DisNum(30 , 2 , AD[0] , 3);
  71.         OLED_DisNum(85 , 2 , AD[1] , 3);
  72.         OLED_DisNum(30 , 4 , AD[2] , 3);
  73.         OLED_DisNum(85 , 4 , AD[3] , 3);
  74.         OLED_DisNum(30 , 6 , AD[4] , 3);
  75.         OLED_DisNum(85 , 6 , AD[5] , 3);
  76. #endif
  77.         
  78.         
  79.         if( LutraConFlag == 1)
  80.         {
  81.             LutrasonicRang();
  82.             
  83.             LutraConFlag = 0;
  84.         }
  85. //        if(key_get(KEY_1) ==  KEY_DOWN)
  86. //        {
  87. //            Delay();
  88. //            if(key_get(KEY_1) ==  KEY_DOWN)
  89. //            {
  90. //                while(key_get(KEY_1) ==  KEY_DOWN);
  91. //                    led_turn(LED0);
  92. //            }
  93. //        }
  94.         //        LutraDistance = LutrasonicRang();
  95.         //        printf("\r\n LutraDis : %d\r\n", LutraDistance);
  96.     }
  97. }



  98. void SystemInit(void)
  99. {
  100.     DisableInterrupts;                                        // 关闭总中断
  101.     key_init(KEY_MAX);                                        //按键初始化
  102.    
  103.     led_init(LED0);                                           //设置GPIO口
  104.     pit_init_ms ( PIT0 , 5 );                                 //设置定时周期 5ms进一次中断
  105.     set_vector_handler(PIT0_VECTORn ,
  106.                        PIT0_IRQHandler);                      //设置中断服务函数

  107.     MotoPwmInit();                                            //电机驱动初始化  FTM0_PRECISON = 10000(精度为0.01%)
  108.     SteerInit()  ;                                            //舵机驱动初始化  FTM1_PRECISON = 1000
  109.     ftm_quad_init(FTM2);                                      //正交解码
  110.     AdcInit();                                                //Adc初始化
  111.     OLED_Init();                                              //OLED初始化
  112.     gpio_init(STOPBUT,GPI,1);
  113.     port_init_NoALT (STOPBUT,PULLUP );
  114.     led (LED0,LED_ON);                                        //开指示灯 关蜂鸣器
  115.     GetMaxValue();                                            //读取赛道最大值
  116.     OLED_Fill(0x00);                                          //初始清屏
  117. //     set_vector_handler(UART3_RX_TX_VECTORn,uart0_handler);
  118. #if DMASTATE
  119.     uart_init(UART3,115200);
  120.     dma0_uart_init((char*)&PrintBuf, 13);                         //串口3 DMA发送
  121.     set_vector_handler(DMA0_VECTORn, dma0_print_isr);   //DMA0中断服务函数
  122.     UART3_BASE_PTR->C5 = (1 << 7);                 //开触发源
  123.     enable_irq(DMA0_IRQn);                          //使能DMA传输
  124.     DMA_ERQ |= (1 << 0);
  125. //        dma1_uart_init((char *)&GetBuff , 11);                         //串口3 DMA接收
  126. //        set_vector_handler(DMA1_VECTORn,dma1_get_isr);       //DMA1中断服务函数
  127. //        UART3_BASE_PTR->C5 = (1 << 5);                     //开触发源
  128. //        enable_irq(DMA1_IRQn);                             //使能DMA传输

  129. #endif
  130.    
  131.     MotoGo(1500)
  132.     Delay();
  133.     LutrasonicInit();
  134.     NVIC_SetPriorityGrouping(0);
  135.     NVIC_SetPriority(PIT0_IRQn,1);
  136.     NVIC_SetPriority(PORTD_IRQn,4);
  137.     enable_irq(PIT0_IRQn);                                    //定时器中断使能
  138.     enable_irq(PORTD_IRQn);
  139.     // uart_rx_irq_en(UART3);
  140. }


  141. void Delay(void)
  142. {
  143.     uint32 i , j;

  144.     for(i = 1000; i > 0; i--)
  145.         for(j = 1000; j > 0 ; j--);
  146. }

  147. char* mitoa(int value, char* str)
  148. {
  149.     int i = 0;
  150.     do{
  151.         *str++ = value % 10 + '0';
  152.         value = value / 10;
  153.         i++;
  154.     } while (value != 0);
  155.     return str;
  156. }

  157. void SendPrintBuf(CommunicationDeal* PrintBuff,char position,int speed,int distance)
  158. {
  159.     PrintBuff->position = position + 48;
  160.     memset(PrintBuff->SpeedData,0,3);
  161.     memset(PrintBuff->distance,0,6);
  162.     mitoa(speed,PrintBuff->SpeedData);
  163.     mitoa(distance,PrintBuff->distance);
  164. }
  165. /**********************GPIO LIST***************************/
  166. // ********************FTM********************************
  167. // PC1、PA11                               ------正交解码
  168. // PC2                                     ------FTM0_CH1_PIN (m1)
  169. // PC3                                     ------FTM0_CH1_PIN (m1)
  170. // PC4                                     ------FTM0_CH3_PIN (m2)
  171. // PA7                                     ------FTM0_CH4_PIN (m2)
  172. // PA8                                     -------Steer

  173. // *******************UART********************************
  174. // PC16 、PC17                             -------Rx Tx

  175. // *******************ADC*********************************
  176. // PTB6                                    -------LEFT1
  177. // PTB7                                    -------LEFT2
  178. // PTB0                                    -------RIGHT1
  179. // PTB1                                    -------RIGHT1
复制代码

所有资料51hei提供下载:
S(前车).7z (600.09 KB, 下载次数: 22)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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