打印
[技术问答]

设置一个准确的延时函数(下)

[复制链接]
583|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shen_hao|  楼主 | 2017-8-14 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这样大概是一秒,系统时钟设置为22.1148M,不知道这是怎么算的?而且__NOP会提示警告,说是无效操作,这其实也正常,不正常得是,六个NOP在延时时间上应该是等于一个NOP,这个实在不明白
void delay_s(uint32_t second)
{
          uint32_t i;
        uint32_t second_temp =second*3000000;
        for(i=0;i<second_temp;i++)
        {
                __NOP;
        //    __NOP;       
        }
}
沙发
dongnanxibei| | 2017-8-14 18:59 | 只看该作者
并不是所有的系统认识NOP的,用NOP和直接写几个分号是一样的效果,系统遇到分号就认为一条语句。。如果分号前没有东西,就是空语句。。

使用特权

评论回复
板凳
heisexingqisi| | 2017-8-14 19:20 | 只看该作者
你用这种根本不要去想精确,,想精确就用定时器。

使用特权

评论回复
地板
shen_hao|  楼主 | 2017-8-15 13:17 | 只看该作者
dongnanxibei 发表于 2017-8-14 18:59
并不是所有的系统认识NOP的,用NOP和直接写几个分号是一样的效果,系统遇到分号就认为一条语句。。如果分号 ...

哦哦,那几个NOP的时间也不应该等于一个NOP

使用特权

评论回复
5
shen_hao|  楼主 | 2017-8-15 13:18 | 只看该作者
heisexingqisi 发表于 2017-8-14 19:20
你用这种根本不要去想精确,,想精确就用定时器。

被你看出来了,NOP你会怎么用?

使用特权

评论回复
6
yiyigirl2014| | 2017-8-15 16:11 | 只看该作者
你可以找个官方的带NOP的头文件看看咋回事就懂了。

使用特权

评论回复
7
yiyigirl2014| | 2017-8-15 16:17 | 只看该作者
在KEIL中编程,有时候发现无法使用:_nop_( );


其实是因为:_nop_( )是库文件intrins.h的函数,相当于汇编的

NOP;所以只要在程序中:

调用 #include<intrins.h>就可以!!!

使用特权

评论回复
8
heisexingqisi| | 2017-8-23 08:49 | 只看该作者
用NOP不要考虑精度。

使用特权

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

本版积分规则

79

主题

230

帖子

2

粉丝