打印

原创 开源一个设计!使用mpu6050测试震动

[复制链接]
4600|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjiahao88|  楼主 | 2016-12-4 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wangjiahao88|  楼主 | 2016-12-4 09:12 | 只看该作者
/**************************************************************************//**
* @file     main.c
* @version  V2.00
* $Revision: 1 $
* $Date: 14/12/08 11:49a $
* @brief    Show how to set GPIO pin mode and use pin data input/output control.
* @note
* Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
******************************************************************************/
#include <stdio.h>
#include "NUC100Series.h"
//
double a[3];
double w[3];
double angle[3];
unsigned char Re_buf[11];
unsigned char counter;
unsigned char sign;
//
void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Enable Internal RC 22.1184MHz clock */
    CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);

    /* Waiting for Internal RC clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);

    /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));

    /* Enable external XTAL 12MHz clock */
    CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);

    /* Waiting for external XTAL clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);

    /* Set core clock as PLL_CLOCK from PLL */
    CLK_SetCoreClock(50000000);

    /* Enable UART module clock */
    CLK_EnableModuleClock(UART0_MODULE);
    CLK_EnableModuleClock(UART1_MODULE);

    /* Select UART module clock source */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));
    CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
    SYS->GPB_MFP |= (SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD);
    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB4_Msk | SYS_GPB_MFP_PB5_Msk);
    SYS->GPB_MFP |= (SYS_GPB_MFP_PB4_UART1_RXD | SYS_GPB_MFP_PB5_UART1_TXD);
}

使用特权

评论回复
板凳
wangjiahao88|  楼主 | 2016-12-4 09:13 | 只看该作者
void UART0_Init()
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init UART                                                                                               */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Reset UART0 */
    SYS_ResetModule(UART0_RST);
    /* Reset UART1 */
    SYS_ResetModule(UART1_RST);
    /* Configure UART0 and set UART0 Baudrate */
    UART_Open(UART0, 115200);
    /* Configure UART0 and set UART0 Baudrate */
    UART_Open(UART1, 115200);
    /* Enable Interrupt and install the call back function */
    UART_EnableInt(UART0, UART_IER_RDA_IEN_Msk);
    /* Enable Interrupt and install the call back function */
    UART_EnableInt(UART1, UART_IER_RDA_IEN_Msk);
}

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2016-12-4 09:14 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/
int main(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Init System, peripheral clock and multi-function I/O */
    SYS_Init();

    /* Lock protected registers */
    SYS_LockReg();

    /* Init UART0 for printf */
    UART0_Init();

    /* Configure PB.2 as Output mode and PE.1 as Input mode */
    GPIO_SetMode(PA, BIT0, GPIO_PMD_OUTPUT);

    PA0=1;

    while(1)
    {
//        if(sign)
//        {
//            sign=0;

//            PA0= ~PA0;

//            if(Re_buf[0]==0x55)      //检查帧头
//            {
//                switch(Re_buf [1])
//                {
//                case 0x51:
////                    a[0] = ((short)(Re_buf[3]<<8| Re_buf[2]))/32768.0*16;
////                    a[1] = ((short)(Re_buf[5]<<8| Re_buf[4]))/32768.0*16;
////                    a[2] = ((short)(Re_buf[7]<<8| Re_buf[6]))/32768.0*16;
//                    UART_WRITE(UART0,0x55);
//                    UART_WRITE(UART0,0x51);
//                    UART_WRITE(UART0,Re_buf[2]);
//                    UART_WRITE(UART0,Re_buf[3]);
//                    UART_WRITE(UART0,Re_buf[4]);
//                    UART_WRITE(UART0,Re_buf[5]);
//                    UART_WRITE(UART0,Re_buf[6]);
//                    UART_WRITE(UART0,Re_buf[7]);
//                    UART_WRITE(UART0,0);
//                    UART_WRITE(UART0,0);
//                    break;
//                case 0x52:
////                    w[0] = ((short)(Re_buf[3]<<8| Re_buf[2]))/32768.0*2000;
////                    w[1] = ((short)(Re_buf[5]<<8| Re_buf[4]))/32768.0*2000;
////                    w[2] = ((short)(Re_buf[7]<<8| Re_buf[6]))/32768.0*2000;
//                    UART_WRITE(UART0,0x55);
//                    UART_WRITE(UART0,0x52);
//                    UART_WRITE(UART0,Re_buf[2]);
//                    UART_WRITE(UART0,Re_buf[3]);
//                    UART_WRITE(UART0,Re_buf[4]);
//                    UART_WRITE(UART0,Re_buf[5]);
//                    UART_WRITE(UART0,Re_buf[6]);
//                    UART_WRITE(UART0,Re_buf[7]);
//                    UART_WRITE(UART0,0);
//                    UART_WRITE(UART0,0);

//                    break;
//                case 0x53:
////                    angle[0] = ((short)(Re_buf[3]<<8| Re_buf[2]))/32768.0*180;
////                    angle[1] = ((short)(Re_buf[5]<<8| Re_buf[4]))/32768.0*180;
////                    angle[2] = ((short)(Re_buf[7]<<8| Re_buf[6]))/32768.0*180;
//                    UART_WRITE(UART0,0x55);
//                    UART_WRITE(UART0,0x53);
//                    UART_WRITE(UART0,Re_buf[2]);
//                    UART_WRITE(UART0,Re_buf[3]);
//                    UART_WRITE(UART0,Re_buf[4]);
//                    UART_WRITE(UART0,Re_buf[5]);
//                    UART_WRITE(UART0,Re_buf[6]);
//                    UART_WRITE(UART0,Re_buf[7]);
//                    UART_WRITE(UART0,0);
//                    UART_WRITE(UART0,0);

//                    break;
//                }
//            }
//        }
                               
    }
}

使用特权

评论回复
5
wangjiahao88|  楼主 | 2016-12-4 09:14 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/* ISR to handle UART Channel 0 interrupt event                                                            */
/*---------------------------------------------------------------------------------------------------------*/
void UART02_IRQHandler(void)
{
    uint8_t u8InChar = 0xFF;
    uint32_t u32IntSts = UART0->ISR;

    if(u32IntSts & UART_ISR_RDA_INT_Msk)
    {
        /* Get all the input characters */
        while(UART_IS_RX_READY(UART0))
        {
            /* Get the character from UART Buffer */
            u8InChar = UART_READ(UART0);
        }
    }
}

使用特权

评论回复
6
wangjiahao88|  楼主 | 2016-12-4 09:15 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/* ISR to handle UART Channel 0 interrupt event                                                            */
/*---------------------------------------------------------------------------------------------------------*/
void UART1_IRQHandler(void)
{
            uint8_t u8InChar = 0xFF;

    uint32_t u32IntSts = UART1->ISR;
    if(u32IntSts & UART_ISR_RDA_INT_Msk)
    {
        /* Get all the input characters */
        while(UART_IS_RX_READY(UART1))
        {
            /* Get the character from UART Buffer */
            u8InChar= UART_READ(UART1);
                                                UART_WRITE(UART0,u8InChar);
                                       
//            if(counter==0&&Re_buf[0]!=0x55) return;      //第0号数据不是帧头
//            counter++;
//            if(counter==11)             //接收到11个数据
//            {
//                counter=0;               //重新赋值,准备下一帧数据的接收
//                sign=1;
//            }
        }
    }
}
/*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/

使用特权

评论回复
7
wangjiahao88|  楼主 | 2016-12-4 09:17 | 只看该作者
请问 出现了 Server (IO) Error 是什么意思 ?

不能上传 附件和照片了?

使用特权

评论回复
8
安智红| | 2016-12-4 09:21 | 只看该作者
请把原代码和原理图发上来,不能算共享

使用特权

评论回复
9
wangjiahao88|  楼主 | 2016-12-4 09:33 | 只看该作者
我不是已经说了 吗?

出现了 Server (IO) Error

使用特权

评论回复
10
東南博士| | 2016-12-4 09:36 | 只看该作者
你用是 新塘的吧

另外 这个能检测震动?

能做的标准测量吗?

使用特权

评论回复
11
宁穿风| | 2016-12-4 09:37 | 只看该作者
测量结果肯定不是标准的吧

使用特权

评论回复
12
宁穿风| | 2016-12-4 09:38 | 只看该作者
能把整个原理图发过来吗,求解

使用特权

评论回复
13
wangjiahao88|  楼主 | 2016-12-4 09:43 | 只看该作者
顶层

顶层.jpg (119.34 KB )

顶层.jpg

使用特权

评论回复
14
wangjiahao88|  楼主 | 2016-12-4 09:44 | 只看该作者
底层

QQ截图20161204094343.jpg (112.66 KB )

QQ截图20161204094343.jpg

使用特权

评论回复
15
wangjiahao88|  楼主 | 2016-12-4 09:45 | 只看该作者
原来是 系统开启了 蓝灯。

昨天使用蓝灯上谷歌 查找英文资料来着!

不能上网的看看是不是这里的问题!

使用特权

评论回复
16
wangjiahao88|  楼主 | 2016-12-4 09:47 | 只看该作者
3D效果图

3D.jpg (135.48 KB )

3D.jpg

使用特权

评论回复
17
wangjiahao88|  楼主 | 2016-12-4 09:47 | 只看该作者
底层3D

3D2.jpg (110.7 KB )

3D2.jpg

使用特权

评论回复
18
wangjiahao88|  楼主 | 2016-12-4 09:48 | 只看该作者
原理图如下

Sheet1.zip

16.58 KB

使用特权

评论回复
19
宁穿风| | 2016-12-4 09:49 | 只看该作者
你就不能一次都发过来呀

使用特权

评论回复
20
wangjiahao88|  楼主 | 2016-12-4 09:50 | 只看该作者
我还不知道 怎么上传 ,稍等 我看看!

希望大家一起探讨!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

474

主题

7520

帖子

30

粉丝