巩义建设网站,怎样写网站描述,wordpress怎么改界面,英文医疗网站建设前言 只要搞懂 M0 的代码结构和 CCS 的图形化配置方法#xff0c;代码移植就会变的很简单。因为本次电赛的需要#xff0c;正好陀螺仪部分代码的移植是我完成的。#xff08;末尾附全部代码#xff09;
一、JY60 陀螺仪 JY60特点 1.模块集成高精度的陀螺仪、加速度计…前言 只要搞懂 M0 的代码结构和 CCS 的图形化配置方法代码移植就会变的很简单。因为本次电赛的需要正好陀螺仪部分代码的移植是我完成的。末尾附全部代码
一、JY60 陀螺仪 JY60特点 1.模块集成高精度的陀螺仪、加速度计采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法能够快速求解出模块当前的实时运动姿态。 2.采用先进的数字滤波技术能有效降低测量噪声提高测量精度。 3.模块内部集成了姿态解算器配合动态卡尔曼滤波算法能够在动态环境下准确输出模块的当前姿态姿态测量精度0.2°稳定性极高性能甚至优于某些专业的倾角仪。 因为此次主要使用的是航向角下面是航向角的参数 二、syscfg 配置 我使用的是串口来接收陀螺仪数据下面是串口的配置。 三、串口接收部分代码 其他代码都直接复制就行只有串口部分代码需要修改。 UART2.c
// #include misc.h
#include wit_c_sdk.h
#include ti_msp_dl_config.h
#include stdio.h
#include UART2.h
#include stdint.h// // 初始化 UART 引脚和多路复用
// void InitUARTPins(void) {
// DL_GPIO_setDirection(GPIO_UART_BT_RX_PORT, GPIO_UART_BT_RX_PIN, DL_GPIO_INPUT);
// DL_GPIO_setDirection(GPIO_UART_BT_TX_PORT, GPIO_UART_BT_TX_PIN, DL_GPIO_OUTPUT);
// DL_GPIO_setIOMUX(GPIO_UART_BT_RX_PORT, GPIO_UART_BT_RX_PIN, GPIO_UART_BT_IOMUX_RX_FUNC);
// DL_GPIO_setIOMUX(GPIO_UART_BT_TX_PORT, GPIO_UART_BT_TX_PIN, GPIO_UART_BT_IOMUX_TX_FUNC);
// }void Usart2Init(unsigned int uiBaud) {// 配置 UART 引脚和多路复用// InitUARTPins();// // 初始化 UART// DL_UART_init(UART_BT_INST, uiBaud, DL_UART_PARITY_NONE, DL_UART_STOPBITS_ONE, DL_UART_DATABITS_8);// 使能 UART 接收中断// DL_UART_enableInterrupt(UART_BT_INST, DL_UART_MAIN_IIDX_RX);// 使能 UART 中断NVIC_EnableIRQ(UART_BT_INST_INT_IRQN);
}void UART_BT_INST_IRQHandler(void) {uint8_t Res;// 检查是否有接收中断if (DL_UART_getPendingInterrupt(UART_BT_INST) DL_UART_MAIN_IIDX_RX) {Res DL_UART_receiveData(UART_BT_INST);WitSerialDataIn(Res);
// DL_UART_clearPendingInterrupt(UART_BT_INST, DL_UART_MAIN_IIDX_RX);}
}void Uart2Send(unsigned char *p_data, unsigned int uiSize) {for (unsigned int i 0; i uiSize; i) {DL_UART_transmitDataBlocking(UART_BT_INST, p_data[i]);}
}四、其他部分代码 这里主要说名一下 gryo.c 中的获取陀螺仪值的代码。其中 gryo_get() 是获取陀螺仪值。其中fAcc[3], fGyro[3], fAngle[3]分别代表三向加速度三向角速度与三向角度。 gryo.c
float fAcc[3], fGyro[3], fAngle[3];void gryo_get(){int i;//if(s_cDataUpdate)//{for(i 0; i 3; i){fAcc[i] sReg[AXi] / 32768.0f * 16.0f;fGyro[i] sReg[GXi] / 32768.0f * 2000.0f;fAngle[i] sReg[Rolli] / 32768.0f * 180.0f;}// fAcc[0]fAcc[0]sin(fAngle[1]*(M_PI/180));// fAcc[1]fAcc[1]-sin(fAngle[0]*(M_PI/180));// printf(gyro:%.3f %.3f %.3f\r\n, fGyro[0], fGyro[1], fGyro[2]);// 应用低通滤波器
// for (i 0; i 2; i) // 这里只对X和Y轴进行滤波
// {
// fAccFiltered[i] alpha * fAcc[i] (1 - alpha) * fAccFiltered[i];
// fAcc[i]fAccFiltered[i];
// }
// if(s_cDataUpdate ACC_UPDATE)
// {
// //printf(acc:X%.3f Y%.3f Z%.3f\r\n, fAcc[0], fAcc[1], fAcc[2]);
// printf(acc:X%.3f Y%.3f\r\n, fAcc[0], fAcc[1]);// s_cDataUpdate ~ACC_UPDATE;
// }
// if(s_cDataUpdate GYRO_UPDATE)
// {
// printf(gyro:%.3f %.3f %.3f\r\n, fGyro[0], fGyro[1], fGyro[2]);
// s_cDataUpdate ~GYRO_UPDATE;
// }
// if(s_cDataUpdate ANGLE_UPDATE)
// {
// printf(angle:Y:%.3f X:%.3f Z:%.3f\r\n, fAngle[0], fAngle[1], fAngle[2]);
// // printf(angle:Y:%.3f\r\n, fAngle[0]);
// s_cDataUpdate ~ANGLE_UPDATE;
// }
// if(s_cDataUpdate MAG_UPDATE)
// {
// printf(mag:%d %d %d\r\n, sReg[HX], sReg[HY], sReg[HZ]);
// s_cDataUpdate ~MAG_UPDATE;
// }//}} 主函数调用代码
#include ti_msp_dl_config.h
#include stdio.h
#include string.h
#include UART2.h
#include wit_c_sdk.h
#include gryo.h
#include delay.hint main(void)
{SYSCFG_DL_init();//整体初始化NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);//串口打印初始化NVIC_EnableIRQ(UART_0_INST_INT_IRQN);Usart2Init(UART_BT_BAUD_RATE);// Usart2Init(9600);WitInit(WIT_PROTOCOL_NORMAL, 0x50);WitSerialWriteRegister(SensorUartSend);WitRegisterCallBack(SensorDataUpdata);WitDelayMsRegister(Delayms);//AutoScanSensor();printf(nihao\r\n);while (1){// printf(begining\r\n);delay_ms(10);gryo_get();}
}