資源簡介
代碼基于STM32+GY521mpu6050模塊和qmc5883L磁力計(jì)可以輸出陀螺儀數(shù)據(jù),加速度數(shù)據(jù),地磁數(shù)據(jù),四元數(shù),角度,電子羅盤角度,由于不會(huì)算法,還沒融合YAW角度,有興趣的大佬可以融合下

代碼片段和文件信息
#include?“delay.h“
#include?“sys.h“
//////////////////////////////////////////////////////////////////////////////////? ?
//如果使用ucos則包括下面的頭文件即可.
#if?SYSTEM_SUPPORT_UCOS
#include?“includes.h“ //ucos?使用 ??
#endif
////////////////////////////////////////////////////////////////////////////////// ?
//本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
//ALIENTEK?STM32開發(fā)板
//使用SysTick的普通計(jì)數(shù)模式對(duì)延遲進(jìn)行管理
//包括delay_usdelay_ms
//正點(diǎn)原子@ALIENTEK
//技術(shù)論壇:www.openedv.com
//修改日期:2012/9/2
//版本:V1.5
//版權(quán)所有,盜版必究。
//Copyright(C)?廣州市星翼電子科技有限公司?2009-2019
//All?rights?reserved
//********************************************************************************
//V1.2修改說明
//修正了中斷中調(diào)用出現(xiàn)死循環(huán)的錯(cuò)誤
//防止延時(shí)不準(zhǔn)確采用do?while結(jié)構(gòu)!
//V1.3修改說明
//增加了對(duì)UCOSII延時(shí)的支持.
//如果使用ucosIIdelay_init會(huì)自動(dòng)設(shè)置SYSTICK的值使之與ucos的TICKS_PER_SEC對(duì)應(yīng).
//delay_ms和delay_us也進(jìn)行了針對(duì)ucos的改造.
//delay_us可以在ucos下使用而且準(zhǔn)確度很高更重要的是沒有占用額外的定時(shí)器.
//delay_ms在ucos下可以當(dāng)成OSTimeDly來用在未啟動(dòng)ucos時(shí)它采用delay_us實(shí)現(xiàn)從而準(zhǔn)確延時(shí)
//可以用來初始化外設(shè)在啟動(dòng)了ucos之后delay_ms根據(jù)延時(shí)的長短選擇OSTimeDly實(shí)現(xiàn)或者delay_us實(shí)現(xiàn).
//V1.4修改說明?20110929
//修改了使用ucos但是ucos未啟動(dòng)的時(shí)候delay_ms中中斷無法響應(yīng)的bug.
//V1.5修改說明?20120902
//在delay_us加入ucos上鎖,防止由于ucos打斷delay_us的執(zhí)行,可能導(dǎo)致的延時(shí)不準(zhǔn)。
//////////////////////////////////////////////////////////////////////////////////? ?
static?u8??fac_us=0;//us延時(shí)倍乘數(shù)
static?u16?fac_ms=0;//ms延時(shí)倍乘數(shù)
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
//systick中斷服務(wù)函數(shù)使用ucos時(shí)用到
void?SysTick_Handler(void)
{ ???
OSIntEnter(); //進(jìn)入中斷
????OSTimeTick();???????//調(diào)用ucos的時(shí)鐘服務(wù)程序???????????????
????OSIntExit();????????//觸發(fā)任務(wù)切換軟中斷
}
#endif
//初始化延遲函數(shù)
//當(dāng)使用ucos的時(shí)候此函數(shù)會(huì)初始化ucos的時(shí)鐘節(jié)拍
//SYSTICK的時(shí)鐘固定為HCLK時(shí)鐘的1/8
//SYSCLK:系統(tǒng)時(shí)鐘
void?delay_init() ?
{
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
u32?reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時(shí)鐘??HCLK/8
fac_us=SystemCoreClock/8000000; //為系統(tǒng)時(shí)鐘的1/8??
?
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
reload=SystemCoreClock/8000000; //每秒鐘的計(jì)數(shù)次數(shù)?單位為K ???
reload*=1000000/OS_TICKS_PER_SEC;//根據(jù)OS_TICKS_PER_SEC設(shè)定溢出時(shí)間
//reload為24位寄存器最大值:16777216在72M下約合1.86s左右
fac_ms=1000/OS_TICKS_PER_SEC;//代表ucos可以延時(shí)的最少單位 ???
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;??? //開啟SYSTICK中斷
SysTick->LOAD=reload;? //每1/OS_TICKS_PER_SEC秒中斷一次
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;??? //開啟SYSTICK????
#else
fac_ms=(u16)fac_us*1000;//非ucos下代表每個(gè)ms需要的systick時(shí)鐘數(shù)???
#endif
} ????
#ifdef?OS_CRITICAL_METHOD //使用了ucos
//延時(shí)nus
//nus為要延時(shí)的us數(shù). ???? ???
void?delay_us(u32?nus)
{
u32?ticks;
u32?toldtnowtcnt=0;
u32?reload=SysTick->LOAD; //LOAD的值 ???? ?
ticks=nus*fac_us;? //需要的節(jié)拍數(shù) ?? ?
tcnt=0;
told=SysTick->VAL;???????? //剛進(jìn)入時(shí)的計(jì)數(shù)器值
while(1)
{
tnow=SysTick->VAL;
if(tnow!=told)
{ ????
if(tnow else?tcnt+=reload-tnow+told; ????
told=tnow;
if(tcnt>=ticks)break;//時(shí)間超過/等于要延遲的時(shí)間則退出.
}??
};? ????
}
//延時(shí)nms
//nms:要延時(shí)的ms
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????5037??2014-11-11?22:28??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\delay\delay.c
?????文件???????1517??2014-11-11?22:28??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\delay\delay.h
?????文件??????19342??2012-12-14?11:16??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\dmpKey.h
?????文件???????6765??2012-12-14?11:16??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\dmpmap.h
?????文件??????89255??2019-04-26?08:48??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\inv_mpu.c
?????文件???????4865??2015-01-17?12:09??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\inv_mpu.h
?????文件??????58347??2019-04-03?08:36??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\inv_mpu_dmp_motion_driver.c
?????文件???????3538??2012-12-14?11:16??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\eMPL\inv_mpu_dmp_motion_driver.h
?????文件???????1232??2018-04-06?15:56??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\HMC5883L\HMC5883L.c
?????文件????????544??2018-04-06?14:58??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\HMC5883L\HMC5883L.h
?????文件???????2551??2019-04-26?15:08??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\I2C\I2C.c
?????文件????????411??2018-04-06?10:11??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\I2C\I2C.h
?????文件???????5697??2018-08-04?15:35??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\MPU6050_I2C\mpu6050_i2c.c
?????文件???????2084??2018-08-04?15:35??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\MPU6050_I2C\mpu6050_i2c.h
?????文件???????3196??2018-08-04?10:06??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\mpui2c\mpui2c.c
?????文件???????1015??2019-04-03?21:39??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\mpui2c\mpui2c.h
?????文件???????2989??2019-04-26?11:23??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\printf\printf.c
?????文件????????219??2019-04-12?15:41??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\printf\printf.h
?????文件????????616??2014-11-11?22:28??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\sys\sys.c
?????文件???????2672??2014-11-11?22:28??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\sys\sys.h
?????文件???????1314??2016-12-14?16:00??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\SysTick\systick.c
?????文件????????121??2016-12-14?16:00??test5MPU6050強(qiáng)制基準(zhǔn)平面\APP\SysTick\systick.h
?????文件??????17273??2010-06-07?10:25??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\core_cm3.c
?????文件??????85714??2011-02-09?14:59??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\core_cm3.h
?????文件??????26297??2011-03-14?12:31??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\Release_Notes.html
?????文件??????15766??2011-03-10?10:52??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\startup\arm\startup_stm32f10x_cl.s
?????文件??????15503??2011-03-10?10:52??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\startup\arm\startup_stm32f10x_hd.s
?????文件??????15692??2011-03-10?10:52??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\startup\arm\startup_stm32f10x_hd_vl.s
?????文件??????12376??2011-03-10?10:52??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\startup\arm\startup_stm32f10x_ld.s
?????文件??????13656??2011-03-10?10:52??test5MPU6050強(qiáng)制基準(zhǔn)平面\CMSIS\startup\arm\startup_stm32f10x_ld_vl.s
............此處省略242個(gè)文件信息
- 上一篇:各種包.zip
- 下一篇:多線程并發(fā)同步爸爸媽媽蘋果橘子問題,有界面
評(píng)論
共有 條評(píng)論