找回密码
 立即注册

QQ登录

只需一步,快速开始

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

GY-50 L3G4200D三轴陀螺仪xs128与k60源码与资料下载

[复制链接]
ID:302552 发表于 2018-4-5 21:41 | 显示全部楼层 |阅读模式
GY-50三轴陀螺仪资料以上传,有需要的朋友请自行下载。希望大家能够相互讨论,互相学习

电路原理图如下:
GY-50-SCH.jpg
GY-50-L3G4200.JPG 模块尺寸.jpg
L3G4200D
0.jpg

L3G4200D例程(xs128与k60平台)
单片机源程序如下:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2013,山外科技
  4. *     All rights reserved.
  5. *     除注明出处外,以下所有内容版权均属山外科技所有,未经允许,不得用于商业用途,
  6. *     修改内容时必须保留山外科技的版权声明。
  7. *
  8. * @file       MK60_conf.c
  9. * @brief      山外K60 平台配置功能实现文件
  10. * @author     山外科技
  11. * @version    v5.1
  12. * @date       2013-06-26
  13. */

  14. #include    "common.h"
  15. #include    "stdio.h"
  16. #include    "MK60_uart.h"
  17. #include    "VCAN_KEY.h"
  18. #include    "VCAN_LED.h"
  19. #include    "MK60_flash.h"


  20. /*!
  21. *  @brief      断言失败所执行的函数
  22. *  @param      file    文件路径地址
  23. *  @param      line    行数
  24. *  @since      v5.0
  25. *  Sample usage:       assert_failed(__FILE__, __LINE__);
  26. */
  27. const char ASSERT_FAILED_STR[] = "Assertion failed in %s at line %d\n";

  28. void assert_failed(char *file, int line)
  29. {
  30.     led_init(LED0);
  31.     while (1)
  32.     {

  33.         DEBUG_PRINTF(ASSERT_FAILED_STR, file, line);      //通过串口提示断言失败

  34.         //死循环等待程序员检测为何断言失败
  35.         led_turn(LED0);
  36.         DELAY_MS(1000);

  37.     }
  38. }

  39. /*!
  40. *  @brief      重定义printf 到串口
  41. *  @param      ch      需要打印的字节
  42. *  @param      stream  数据流
  43. *  @since      v5.0
  44. *  @note       此函数由编译器自带库里的printf所调用
  45. */
  46. int fputc(int ch, FILE *stream)
  47. {
  48.     uart_putchar(VCAN_PORT, (char)ch);
  49.     return(ch);
  50. }

  51. /*!
  52. *  @brief      启动前进行检测(检测按键是否按下,按下则进入死循环,防止进入 main 函数,松开按键后再按下则进行解锁)
  53. *  @since      v5.0
  54. *  @note       此函数可避免 下载口在 main 前 复用了导致无法下载等问题
  55. */
  56. void start_check()
  57. {
  58.     uint8 flag = 0;

  59.     key_init(KEY_A);

  60.     if(key_check(KEY_A) == KEY_DOWN )
  61.     {
  62.         //按键按下

  63.         led_init(LED0);

  64.         while(1)
  65.         {

  66.             if(key_check(KEY_A) == KEY_UP)
  67.             {
  68.                 flag = 1;
  69.             }

  70.             led_turn(LED0);
  71.             printf("\n进入死循环等待!");
  72.             DELAY_MS(500);                          //此处的延时,可起到 按键 消抖的功能

  73.             //如果 送开按键后,再按下 按键,则 进行解锁 操作
  74.             if((flag == 1)  && (key_check(KEY_A) == KEY_DOWN ))
  75.             {
  76.                 while(key_check(KEY_A) == KEY_DOWN)         //等待按键 弹起
  77.                 {
  78.                     led_turn(LED0);
  79.                     DELAY_MS(100);                          //此处的延时,可起到 按键 消抖的功能
  80.                 }

  81.                 while(key_check(KEY_A) == KEY_UP)         //等待按键 弹起后 再 进行解锁
  82.                 {
  83.                     led_turn(LED0);
  84.                     DELAY_MS(50);                          //此处的延时,可起到 按键 消抖的功能
  85.                 }

  86.                 printf("\n进行解锁操作,请重新刷入固件");

  87.                 //解锁单片机
  88.                 flash_init();
  89.                 DELAY_MS(100);
  90.                 flash_erase_sector(0);        //擦除扇区 0  (解锁)
  91.                 NVIC_SystemReset();           //复位单片机

  92.             }
  93.         }
  94.     }
  95. }

  96. #ifdef  DEBUG
  97. // VECTOR_TABLE end
  98. static char vector_str[][15];
  99. #endif

  100. /*!
  101. *  @brief      默认中断服务函数
  102. *  @since      v5.0
  103. *  @note       此函数写入中断向量表里,不需要用户执行
  104. */
  105. void default_isr(void)
  106. {


  107. #ifdef  DEBUG
  108. #define VECTORNUM    ((SCB_ICSR & SCB_ICSR_VECTACTIVE_MASK)>>SCB_ICSR_VECTACTIVE_SHIFT)
  109.                             //等效于 (*(volatile uint8_t*)(0xE000ED04))
  110.     uint8 vtr = VECTORNUM;
  111.     led_init(LED1);

  112.     while(1)
  113.     {
  114.         led_turn(LED1);
  115.         DEBUG_PRINTF("\n****default_isr entered on vector %d*****\n\n%s Interrupt", vtr, vector_str[vtr]);

  116.         DELAY_MS(1000);
  117.     }
  118. #else
  119.     return;
  120. #endif
  121. }

  122. #ifdef DEBUG

  123. char vector_str[][15] =
  124. {
  125.     /******  Cortex-M4 Processor Exceptions Numbers ****************************************************************/
  126.     "",                         //0
  127.     "",
  128.     "NonMaskable"               , /*!< 2 Non Maskable Interrupt                              */
  129.     "HardFault"                 , /*!< 3 Hard Fault                                          */
  130.     "MemManagement"             , /*!< 4 Cortex-M4 Memory Management Interrupt               */
  131.     "BusFault"                  , /*!< 5 Cortex-M4 Bus Fault Interrupt                       */
  132.     "UsageFault"                , /*!< 6 Cortex-M4 Usage Fault Interrupt                     */
  133.     "",                         //7
  134.     "",
  135.     "",                         //9
  136.     "",
  137.     "SVCall"                    , /*!< 11 Cortex-M4 SV Call Interrupt                        */
  138.     "DebugMonitor"              , /*!< 12 Cortex-M4 Debug Monitor Interrupt                  */
  139.     "",
  140.     "PendSV"                    , /*!< 14 Cortex-M4 Pend SV Interrupt                        */
  141.     "SysTick"                   , /*!< 15 Cortex-M4 System Tick Interrupt                    */
  142.     /******  Kinetis 60 specific Interrupt Numbers **********************************************************************/
  143.     "DMA0"                      , // DMA Channel 0 Transfer Complete
  144.     "DMA1"                      , // DMA Channel 1 Transfer Complete
  145.     "DMA2"                      , // DMA Channel 2 Transfer Complete
  146.     "DMA3"                      , // DMA Channel 3 Transfer Complete
  147.     "DMA4"                      , // DMA Channel 4 Transfer Complete
  148.     "DMA5"                      , // DMA Channel 5 Transfer Complete
  149.     "DMA6"                      , // DMA Channel 6 Transfer Complete
  150.     "DMA7"                      , // DMA Channel 7 Transfer Complete
  151.     "DMA8"                      , // DMA Channel 8 Transfer Complete
  152.     "DMA9"                      , // DMA Channel 9 Transfer Complete
  153.     "DMA10"                     , // DMA Channel 10 Transfer Complete
  154.     "DMA11"                     , // DMA Channel 11 Transfer Complete
  155.     "DMA12"                     , // DMA Channel 12 Transfer Complete
  156.     "DMA13"                     , // DMA Channel 13 Transfer Complete
  157.     "DMA14"                     , // DMA Channel 14 Transfer Complete
  158.     "DMA15"                     , // DMA Channel 15 Transfer Complete
  159.     "DMA_Error"                 , // DMA Error Interrupt
  160.     "MCM"                       , // Normal Interrupt
  161.     "FTFL"                      , // FTFL Interrupt
  162.     "Read_Collision"            , // Read Collision Interrupt
  163.     "LVD_LVW"                   , // Low Voltage Detect, Low Voltage Warning
  164.     "LLW"                       , // Low Leakage Wakeup
  165.     "Watchdog"                  , // WDOG Interrupt
  166.     "RNG"                       , // RNGB Interrupt
  167.     "I2C0"                      , // I2C0 interrupt
  168.     "I2C1"                      , // I2C1 interrupt
  169.     "SPI0"                      , // SPI0 Interrupt
  170.     "SPI1"                      , // SPI1 Interrupt
  171.     "SPI2"                      , // SPI2 Interrupt
  172.     "CAN0_OR_MB_buf"            , // CAN0 OR'd Message Buffers Interrupt
  173.     "CAN0_Bus_Off"              , // CAN0 Bus Off Interrupt
  174.     "CAN0_Error"                , // CAN0 Error Interrupt
  175.     "CAN0_Tx_Warning"           , // CAN0 Tx Warning Interrupt
  176.     "CAN0_Rx_Warning"           , // CAN0 Rx Warning Interrupt
  177.     "CAN0_Wake_Up"              , // CAN0 Wake Up Interrupt
  178.     "Reserved51"                , // 保留 interrupt 51
  179.     "Reserved52"                , // 保留 interrupt 52
  180.     "CAN1_OR_MB_buf"            , // CAN1 OR'd Message Buffers Interrupt
  181.     "CAN1_Bus_Off"              , // CAN1 Bus Off Interrupt
  182.     "CAN1_Error"                , // CAN1 Error Interrupt
  183.     "CAN1_Tx_Warning"           , // CAN1 Tx Warning Interrupt
  184.     "CAN1_Rx_Warning"           , // CAN1 Rx Warning Interrupt
  185.     "CAN1_Wake_Up"              , // CAN1 Wake Up Interrupt
  186.     "Reserved59"                , // 保留 interrupt 59
  187.     "Reserved60"                , // 保留 interrupt 60
  188.     "UART0_RX_TX"               , // UART0 Receive/Transmit interrupt
  189.     "UART0_ERR"                 , // UART0 Error interrupt
  190.     "UART1_RX_TX"               , // UART1 Receive/Transmit interrupt
  191.     "UART1_ERR"                 , // UART1 Error interrupt
  192.     "UART2_RX_TX"               , // UART2 Receive/Transmit interrupt
  193.     "UART2_ERR"                 , // UART2 Error interrupt
  194.     "UART3_RX_TX"               , // UART3 Receive/Transmit interrupt
  195.     "UART3_ERR"                 , // UART3 Error interrupt
  196.     "UART4_RX_TX"               , // UART4 Receive/Transmit interrupt
  197.     "UART4_ERR"                 , // UART4 Error interrupt
  198.     "UART5_RX_TX"               , // UART5 Receive/Transmit interrupt
  199.     "UART5_ERR"                 , // UART5 Error interrupt
  200.     "ADC0"                      , // ADC0 interrupt
  201.     "ADC1"                      , // ADC1 interrupt
  202.     "CMP0"                      , // CMP0 interrupt
  203.     "CMP1"                      , // CMP1 interrupt
  204.     "CMP2"                      , // CMP2 interrupt
  205.     "FTM0"                      , // FTM0 fault, overflow and channels interrupt
  206.     "FTM1"                      , // FTM1 fault, overflow and channels interrupt
  207.     "FTM2"                      , // FTM2 fault, overflow and channels interrupt
  208.     "CMT"                       , // CMT interrupt
  209.     "RTC"                       , // RTC interrupt
  210.     "Reserved83"                , // 保留 interrupt 83
  211.     "PIT0"                      , // PIT timer channel 0 interrupt
  212.     "PIT1"                      , // PIT timer channel 1 interrupt
  213.     "PIT2"                      , // PIT timer channel 2 interrupt
  214.     "PIT3"                      , // PIT timer channel 3 interrupt
  215.     "PDB0"                      , // PDB0 Interrupt
  216.     "USB0"                      , // USB0 interrupt
  217.     "USBDCD"                    , // USBDCD Interrupt
  218. ……………………

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

所有资料51hei提供下载:

GY-50三轴陀螺仪资料.zip (2.6 MB, 下载次数: 36)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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