亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
MPU6050匿名小四軸飛控源碼資料包 bee_source好用版
[打印本頁(yè)]
作者:
kobe1997
時(shí)間:
2017-5-5 22:19
標(biāo)題:
MPU6050匿名小四軸飛控源碼資料包 bee_source好用版
新手來(lái)分享一下!互相學(xué)習(xí),MPU6050 bee_source好用版,
編譯,下載,運(yùn)行,連接飛控串口和FTDI串口,串口波特率500K,上位機(jī)打開(kāi)高級(jí)收碼,在上位機(jī)飛控狀態(tài)標(biāo)簽可以看到變化的傳感器數(shù)據(jù),3D顯示可以跟隨roll和pitch的變化而變化,因?yàn)闆](méi)有寫(xiě)yaw的上傳,所以yaw保持零度...此時(shí)打開(kāi)飛控波形按鈕,打開(kāi)波形顯示頁(yè)面,并打開(kāi)相應(yīng)波形開(kāi)關(guān),1到3為加速度,4到6為陀螺儀,10和11為roll和pitch,就可以看到變化的波形.
0.png
(49.35 KB, 下載次數(shù): 80)
下載附件
2017-5-5 23:03 上傳
完整代碼下載:
bee_source好用版.7z
(578.51 KB, 下載次數(shù): 79)
2017-5-5 22:18 上傳
點(diǎn)擊文件名下載附件
bee系
下載積分: 黑幣 -5
stm32源程序:
#include "MPU6050.h"
#include "ANO_Tech_STM32F10x_I2C.h"
#include "tim.h"
u8 mpu6050_buffer[14]; //iic讀取后存放數(shù)據(jù)
S_INT16_XYZ GYRO_OFFSET,ACC_OFFSET; //零漂
u8 GYRO_OFFSET_OK = 1;
u8 ACC_OFFSET_OK = 1;
S_INT16_XYZ MPU6050_ACC_LAST,MPU6050_GYRO_LAST; //最新一次讀取值
void Delay_ms_mpu(u16 nms)
{
u8 delay_cnt = TIM3_IRQCNT;
while((delay_cnt+(nms*2)) > TIM3_IRQCNT);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
//將iic讀取到得數(shù)據(jù)分拆,放入相應(yīng)寄存器
*******************************************************************************/
void MPU6050_Dataanl(void)
{
MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X;
MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y;
MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z;
//跳過(guò)溫度ADC
MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X;
MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y;
MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z;
if(!GYRO_OFFSET_OK)
{
static int32_t tempgx=0,tempgy=0,tempgz=0;
static uint8_t cnt_g=0;
// LED1_ON;
if(cnt_g==0)
{
GYRO_OFFSET.X=0;
GYRO_OFFSET.Y=0;
GYRO_OFFSET.Z=0;
tempgx = 0;
tempgy = 0;
tempgz = 0;
cnt_g = 1;
return;
}
tempgx+= MPU6050_GYRO_LAST.X;
tempgy+= MPU6050_GYRO_LAST.Y;
tempgz+= MPU6050_GYRO_LAST.Z;
if(cnt_g==200)
{
GYRO_OFFSET.X=tempgx/cnt_g;
GYRO_OFFSET.Y=tempgy/cnt_g;
GYRO_OFFSET.Z=tempgz/cnt_g;
cnt_g = 0;
GYRO_OFFSET_OK = 1;
// EE_SAVE_GYRO_OFFSET();//保存數(shù)據(jù)
return;
}
cnt_g++;
}
if(!ACC_OFFSET_OK)
{
static int32_t tempax=0,tempay=0,tempaz=0;
static uint8_t cnt_a=0;
// LED1_ON;
if(cnt_a==0)
{
ACC_OFFSET.X = 0;
ACC_OFFSET.Y = 0;
ACC_OFFSET.Z = 0;
tempax = 0;
tempay = 0;
tempaz = 0;
cnt_a = 1;
return;
}
tempax+= MPU6050_ACC_LAST.X;
tempay+= MPU6050_ACC_LAST.Y;
//tempaz+= MPU6050_ACC_LAST.Z;
if(cnt_a==200)
{
ACC_OFFSET.X=tempax/cnt_a;
ACC_OFFSET.Y=tempay/cnt_a;
ACC_OFFSET.Z=tempaz/cnt_a;
cnt_a = 0;
ACC_OFFSET_OK = 1;
// EE_SAVE_ACC_OFFSET();//保存數(shù)據(jù)
return;
}
cnt_a++;
}
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
//將iic讀取到得數(shù)據(jù)分拆,放入相應(yīng)寄存器,更新MPU6050_Last
*******************************************************************************/
void MPU6050_Read(void)
{
ANO_Tech_I2C1_Read_Int(devAddr,MPU6050_RA_ACCEL_XOUT_H,14,mpu6050_buffer);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: u8 IICwriteBit(u8 dev, u8 reg, u8 bitNum, u8 data)
*功 能: 讀 修改 寫(xiě) 指定設(shè)備 指定寄存器一個(gè)字節(jié) 中的1個(gè)位
輸入 dev 目標(biāo)設(shè)備地址
reg 寄存器地址
bitNum 要修改目標(biāo)字節(jié)的bitNum位
data 為0 時(shí),目標(biāo)位將被清0 否則將被置位
返回 成功 為1
失敗為0
*******************************************************************************/
void IICwriteBit(u8 dev, u8 reg, u8 bitNum, u8 data){
u8 b;
ANO_Tech_I2C1_Read_Buf(dev, reg, 1, &b);
b = (data != 0) ? (b | (1 << bitNum)) : (b & ~(1 << bitNum));
ANO_Tech_I2C1_Write_1Byte(dev, reg, b);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: u8 IICwriteBits(u8 dev,u8 reg,u8 bitStart,u8 length,u8 data)
*功 能: 讀 修改 寫(xiě) 指定設(shè)備 指定寄存器一個(gè)字節(jié) 中的多個(gè)位
輸入 dev 目標(biāo)設(shè)備地址
reg 寄存器地址
bitStart 目標(biāo)字節(jié)的起始位
length 位長(zhǎng)度
data 存放改變目標(biāo)字節(jié)位的值
返回 成功 為1
失敗為0
*******************************************************************************/
void IICwriteBits(u8 dev,u8 reg,u8 bitStart,u8 length,u8 data)
{
u8 b,mask;
ANO_Tech_I2C1_Read_Buf(dev, reg, 1, &b);
mask = (0xFF << (bitStart + 1)) | 0xFF >> ((8 - bitStart) + length - 1);
data <<= (8 - length);
data >>= (7 - bitStart);
b &= mask;
b |= data;
ANO_Tech_I2C1_Write_1Byte(dev, reg, b);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_setClockSource(uint8_t source)
*功 能: 設(shè)置 MPU6050 的時(shí)鐘源
* CLK_SEL | Clock Source
* --------+--------------------------------------
* 0 | Internal oscillator
* 1 | PLL with X Gyro reference
* 2 | PLL with Y Gyro reference
* 3 | PLL with Z Gyro reference
* 4 | PLL with external 32.768kHz reference
* 5 | PLL with external 19.2MHz reference
* 6 | Reserved
* 7 | Stops the clock and keeps the timing generator in reset
*******************************************************************************/
void MPU6050_setClockSource(uint8_t source){
IICwriteBits(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_CLKSEL_BIT, MPU6050_PWR1_CLKSEL_LENGTH, source);
}
/** Set full-scale gyroscope range.
* @param range New full-scale gyroscope range value
* @see getFullScaleRange()
* @see MPU6050_GYRO_FS_250
* @see MPU6050_RA_GYRO_CONFIG
* @see MPU6050_GCONFIG_FS_SEL_BIT
* @see MPU6050_GCONFIG_FS_SEL_LENGTH
*/
void MPU6050_setFullScaleGyroRange(uint8_t range) {
IICwriteBits(devAddr, MPU6050_RA_GYRO_CONFIG, MPU6050_GCONFIG_FS_SEL_BIT, MPU6050_GCONFIG_FS_SEL_LENGTH, range);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_setFullScaleAccelRange(uint8_t range)
*功 能: 設(shè)置 MPU6050 加速度計(jì)的最大量程
*******************************************************************************/
void MPU6050_setFullScaleAccelRange(uint8_t range) {
IICwriteBits(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_AFS_SEL_BIT, MPU6050_ACONFIG_AFS_SEL_LENGTH, range);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_setSleepEnabled(uint8_t enabled)
*功 能: 設(shè)置 MPU6050 是否進(jìn)入睡眠模式
enabled =1 睡覺(jué)
enabled =0 工作
*******************************************************************************/
void MPU6050_setSleepEnabled(uint8_t enabled) {
IICwriteBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_SLEEP_BIT, enabled);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_setI2CMasterModeEnabled(uint8_t enabled)
*功 能: 設(shè)置 MPU6050 是否為AUX I2C線的主機(jī)
*******************************************************************************/
void MPU6050_setI2CMasterModeEnabled(uint8_t enabled) {
IICwriteBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_I2C_MST_EN_BIT, enabled);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_setI2CBypassEnabled(uint8_t enabled)
*功 能: 設(shè)置 MPU6050 是否為AUX I2C線的主機(jī)
*******************************************************************************/
void MPU6050_setI2CBypassEnabled(uint8_t enabled) {
IICwriteBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_I2C_BYPASS_EN_BIT, enabled);
}
void MPU6050_setDLPF(uint8_t mode)
{
IICwriteBits(devAddr, MPU6050_RA_CONFIG, MPU6050_CFG_DLPF_CFG_BIT, MPU6050_CFG_DLPF_CFG_LENGTH, mode);
}
/**************************實(shí)現(xiàn)函數(shù)********************************************
*函數(shù)原型: void MPU6050_initialize(void)
*功 能: 初始化 MPU6050 以進(jìn)入可用狀態(tài)。
*******************************************************************************/
void MPU6050_Init(void)
{
ANO_Tech_I2C1_Write_1Byte(0xd0,0x19,0x07);//1khz
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
作者:
admin
時(shí)間:
2017-5-5 23:06
好資料,51黑有你更精彩。
作者:
kobe1997
時(shí)間:
2017-5-7 22:50
admin 發(fā)表于 2017-5-5 23:06
好資料,51黑有你更精彩。
那才給那么低的分
作者:
insightx
時(shí)間:
2017-10-16 17:32
好資料
作者:
kpoih
時(shí)間:
2018-9-9 15:52
好資料
作者:
kpoih
時(shí)間:
2018-9-9 15:53
好資料,優(yōu)秀
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1