我用的片子是G2553,我写的简单的语句延时为什么单片机不执行呢。

2019-03-24 13:26发布

我用的片子是G2553,我写的简单的语句延时为什么单片机不执行呢。
void DelayUs(unsigned char us)   //delay us
{
   for(;us>0;us--);
}
希望大家知道的解释一下! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
tthhee
1楼-- · 2019-03-25 02:01
 精彩回答 2  元偷偷看……
xiaocai1
2楼-- · 2019-03-25 03:33
我刚遇到了同样的问题   你把自己定义的那个延时函数改成
void delay()
{
       uint32_t i,j;
       for(i=1000;i>0;i--)
              for(j=100;j>0;j--)
             _nop();
}
看看 行不  我就这么弄的
tthhee
3楼-- · 2019-03-25 07:59
恩,可以。谢谢了。不过我还是想知道为什么上面的不行,是编译器的原因吗?
index219
4楼-- · 2019-03-25 11:03
 精彩回答 2  元偷偷看……
vellonj
5楼-- · 2019-03-25 14:01
呃呃,延时语句在MSP430好像不能这样写的~~
试试这个~~
关键字: volatile
void delay(unsigned int duration)
{
        volatile unsigned int d = duration;
        while((d--) > 0)
        {
        }
}
ccstc
6楼-- · 2019-03-25 16:53
建议使用下面的延时函数
  1. #define F_CPU    ((double)8000000)


  2. #define _delay_us(x)
  3.   __delay_cycles( (unsigned long) ( (double)(F_CPU) *((x)/1000000.0) + 0.5))


  4. #define _delay_ms(x)
  5.   __delay_cycles( (unsigned long) ( (double)(F_CPU)*((x)/1000.0) + 0.5))


  6. #define _delay_s(x)
  7.   __delay_cycles( (unsigned long) ( (double)(F_CPU)*((x)/1.0) + 0.5))

  8. #endif
复制代码

一周热门 更多>

相关问题

    相关文章