野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11669|回复: 7

mpu6050 圆点代码的移植

[复制链接]
发表于 2015-2-4 15:45:01 | 显示全部楼层 |阅读模式
void delay_ms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;//时间加载(Systick->LOAD为24bit)
        SysTick->VAL =0x00;           //清空计数器
        SysTick->CTRL=0x01 ;          //开始倒数  
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
        SysTick->CTRL=0x00;       //关闭计数器
        SysTick->VAL =0X00;       //清空计数器                      
}   

仿真的是后在卡死在whlie()中,不知道这样的延时函数是怎么工作的,怎样修改才可以成功延时呢?
源代码在:
\野火光盘C\02-野火ISO 程序\2-野火ISO-项目提高篇\32、mpu6050教程\野火ISO-V2例程\STM32-DMP移植\SYSTEM\delay
。。。

回复

使用道具 举报

发表于 2015-2-4 16:16:11 | 显示全部楼层
你没有写中断服务函数吧
回复 支持 反对

使用道具 举报

发表于 2015-2-4 22:58:53 来自手机 | 显示全部楼层
我感觉那个while语句里面的判断条件的优先级有点乱,可能是这出了点问题……仅供参考
回复 支持 反对

使用道具 举报

发表于 2015-2-12 02:08:48 | 显示全部楼层
自己重新写一个延时程序就行了  
回复 支持 反对

使用道具 举报

发表于 2015-3-11 16:36:48 | 显示全部楼层
我也碰到同样的问题,不管软件仿真还是硬件调试都会卡在那里。不要这个延时函数不行吗?
回复 支持 反对

使用道具 举报

发表于 2015-3-11 17:03:43 | 显示全部楼层
我直接把这个延时函数引掉了,运行效果还可以。之前火哥没移植DMP的例程里面,硬件软件例程都没有延时函数,一样运行的很好,所以窃以为去掉这里的延时函数应该没什么影响。
回复 支持 反对

使用道具 举报

发表于 2015-3-11 17:51:59 | 显示全部楼层
这是使用系统滴答定时延时,配置正确可以达到精准的延时时间,实际上很多地方也可以自己写不是很精准的延时函数(就平时经常用那种delay)代替。
回复 支持 反对

使用道具 举报

发表于 2015-12-7 14:33:39 | 显示全部楼层
我又来学习了一下
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-20 12:53 , Processed in 0.032093 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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