这个延时函数void Delay(unsigned int us) { unsigned int i; for (i = 0; i < 33; i++) _nop_(); }有问题吗?
时间: 2024-05-23 13:16:04 浏览: 14
这个延时函数的问题在于它使用了一个固定的循环次数来实现延时,而没有考虑到不同的处理器可能有不同的时钟频率,因此在不同的处理器上延时的时间会不同。同时,不同的编译器优化也会影响延时的准确性。因此,这个延时函数并不是一个可靠的实现方式。
更好的实现方式是使用硬件定时器或者延时函数库,例如使用系统提供的delay函数,或者使用定时器来实现精确的延时。这些实现方式可以根据不同的处理器和时钟频率来进行适配,从而保证延时的准确性和可靠性。
相关问题
/*****************延时函数******************/ void Delay(unsigned int n) { unsigned int i; for(i = 0; i < n; i++); for(i = 0; i < n; i++); for(i = 0; i < n; i++); for(i = 0; i < n; i++); for(i = 0; i < n; i++); } void Delay_10us(unsigned char n) { for( ; n > 0; n--); }
这是一个实现延时的函数,具体解释如下:
```c
void Delay(unsigned int n)
```
这是一个无返回值、一个参数(无符号整型n)的函数,函数名为Delay。
```c
unsigned int i;
for(i = 0; i < n; i++);
for(i = 0; i < n; i++);
for(i = 0; i < n; i++);
for(i = 0; i < n; i++);
for(i = 0; i < n; i++);
```
这个函数使用了多个for循环来进行延时,每个for循环都执行n次空语句,从而实现了总共n * 5次的延时。
```c
void Delay_10us(unsigned char n)
```
这是一个无返回值、一个参数(无符号字符型n)的函数,函数名为Delay_10us。
```c
for( ; n > 0; n--);
```
这个函数使用一个for循环来进行延时,每个for循环都执行一次空语句,从而实现了总共n次的延时(每次延时大约为10微秒)。
这个延时函数主要用于在CC2530芯片上实现延时功能,以便在需要等待一段时间后再进行某个操作。
void delay_us(unsigned int us){ unsigned int i,j; for(i=0;i<us;i++) for(j=0;j<12;j++);}void delay_ms(unsigned int ms){ unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<12000;j++);}解释代码,晶振12M
这段代码是用来实现延时的,其中 delay_us 函数用来延时指定的微秒数,delay_ms 函数用来延时指定的毫秒数。
在晶振为 12MHz 的情况下,每个机器周期为 1/12MHz = 83.33ns。
delay_us 函数中的 for 循环中,i 的范围是 0 到 us-1,表示需要延时的微秒数。j 的范围是 0 到 11,每次执行内部的操作都需要 12 个机器周期,因此 for 循环中执行的次数为 us*12。由于每个机器周期需要 83.33ns,因此 delay_us 函数的总延时时间为 us*12*83.33ns = us*1us。
delay_ms 函数中的 for 循环中,i 的范围是 0 到 ms-1,表示需要延时的毫秒数。j 的范围是 0 到 11999,每次执行内部的操作都需要 12000 个机器周期,因此 for 循环中执行的次数为 ms*12000。由于每个机器周期需要 83.33ns,因此 delay_ms 函数的总延时时间为 ms*12000*83.33ns = ms*1ms。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)