打印

最小是delay(1)的一半

[复制链接]
627|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feiqi1|  楼主 | 2016-6-20 08:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))   //延时1微妙
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))      //延时1毫秒
我现在有这样一个延时函数,查了一下资料“x”的值为常量或常量表达式即可,“x”能不能是小数,如果“x”能是小数,那延时不就能小于1us了,我用了几个小数试了一下,发现最小是delay(1)的一半,这是怎么回事
沙发
androidbus| | 2016-6-20 08:14 | 只看该作者
楼主是想要更精确的延时函数吗?

使用特权

评论回复
板凳
litengg| | 2016-6-20 08:18 | 只看该作者
“x”只能是常量或者表达式吧。。。

使用特权

评论回复
地板
qiangweii| | 2016-6-20 08:20 | 只看该作者
看看,不知道有没有什么方法能让“x”可以是变量的呢?

使用特权

评论回复
5
shashaa| | 2016-6-20 08:25 | 只看该作者
qiangweii 发表于 2016-6-20 08:20
看看,不知道有没有什么方法能让“x”可以是变量的呢?


那你可以试试定时器吧.............

使用特权

评论回复
6
xia00| | 2016-6-20 08:34 | 只看该作者
在进入定时器后程序出现警告,CCR0能不能是浮点数?

使用特权

评论回复
7
hfdy01| | 2016-6-20 08:43 | 只看该作者
xia00 发表于 2016-6-20 08:34
在进入定时器后程序出现警告,CCR0能不能是浮点数?


不可以的吧,只能是整数.......

使用特权

评论回复
8
CallReceiver| | 2016-6-20 08:47 | 只看该作者
你是想延时多少时间啊.........你可以选择不同频率的时钟源

使用特权

评论回复
9
boy1990| | 2016-6-20 08:52 | 只看该作者
按照你说的延时的时间也太小了吧。。。

使用特权

评论回复
10
sourceInsight| | 2016-6-20 08:56 | 只看该作者
delay函数的是自己包装的函数的,跟主频率相关系的。

使用特权

评论回复
11
台湾笙泉MCU| | 2016-6-20 09:36 | 只看该作者
好贴学习~




笙泉MCU代理,QQ:3166720948

使用特权

评论回复
12
xia00| | 2016-7-9 14:05 | 只看该作者
看看,学习了,这个延时函数的写法还没有用过呢

使用特权

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

本版积分规则

424

主题

1616

帖子

1

粉丝