胡靖 发表于 2025-3-7 22:09:47

这个句子是怎 样计时到1MS


void delay_ms(u8 ms)
{
   u16 i;
   do{
          i = 24M / 10000;
          while(--i);   //10T per loop
   }while(--ms);
} 是怎 么计时到1MS??
如delay_ms(250)就延时到250MS

国芯人工智能 发表于 2025-3-7 22:12:00

该函数通过循环实现延时。假设系统时钟为24MHz,`i = 24M / 10000` 计算出每1ms所需的循环次数为2400。内层 `while(--i)` 每次循环消耗10个时钟周期(10T),因此2400次循环消耗24000个时钟周期,恰好为1ms。外层 `while(--ms)` 控制总的延时时间,`delay_ms(250)` 即循环250次,达到250ms延时。此方法依赖精确的时钟频率和循环周期,适用于对精度要求不高的场景。

[本文内容由国芯人工智能辅助生成,仅供参考]

国芯人工智能 发表于 2025-3-7 22:18:00

该代码通过循环计数实现延时。假设系统时钟为24MHz,`i = 24M / 10000` 将 `i` 初始化为 2400。内层循环 `while(--i)` 每次执行约10个时钟周期,因此总耗时约为 2400 * 10 / 24MHz = 1ms。外层循环 `while(--ms)` 控制延时次数,例如 `delay_ms(250)` 将执行250次1ms循环,总延时250ms。此方法依赖于准确的时钟频率和指令周期,实际应用中需考虑系统中断等影响因素。

[本文内容由国芯人工智能辅助生成,仅供参考]

国芯人工智能 发表于 2025-3-7 22:18:00

该代码通过循环实现延时功能。`i = 24M / 10000` 将 `i` 初始化为 2400,假设系统时钟为 24MHz,每个循环耗时 10 个时钟周期(10T),则每次内循环耗时约 0.001 秒(1ms)。`while(--i)` 执行 2400 次,耗时 1ms。`do-while(--ms)` 控制外层循环次数,`ms` 为延时毫秒数,如 `delay_ms(250)` 即执行 250 次 1ms 延时,总延时 250ms。代码通过精确的循环次数和时钟周期计算实现毫秒级延时。

[本文内容由国芯人工智能辅助生成,仅供参考]

国芯人工智能 发表于 2025-3-7 22:18:00

该代码通过循环计数实现延时。假设系统时钟为24MHz,`i = 24M / 10000` 将 `i` 初始化为2400。内层循环 `while(--i)` 每次执行约10个时钟周期,因此内层循环总耗时约为 `2400 * 10 / 24M = 1ms`。外层循环 `while(--ms)` 控制延时次数,`ms` 为延时毫秒数。例如 `delay_ms(250)` 将执行250次内层循环,总延时约250ms。该方法的精度依赖于时钟频率和指令周期,实际应用中需结合具体硬件调试。

[本文内容由国芯人工智能辅助生成,仅供参考]

国芯人工智能 发表于 2025-3-7 22:18:00

该函数通过循环计数实现延时,具体步骤如下:

1. **时钟频率**:假设系统时钟为24MHz,即每微秒执行24个时钟周期。
2. **内层循环**:`i = 24M / 10000` 计算得到 `i = 2400`,表示每次内层循环需要执行2400次。
3. **循环耗时**:`while(--i)`每次循环消耗10个时钟周期,因此内层循环总耗时约为2400 * 10 / 24M = 1ms。
4. **外层循环**:`while(--ms)`控制内层循环的执行次数,每执行一次内层循环,延时1ms。因此,`delay_ms(250)`将延时250ms。

综上,函数通过精确的循环计数实现了1ms的延时,并通过外层循环控制总延时时间。

[本文内容由国芯人工智能辅助生成,仅供参考]

国芯人工智能 发表于 2025-3-7 22:18:00

在该代码中,`delay_ms`函数通过循环计数实现延时。具体原理如下:

1. **时钟频率**:假设系统时钟为24MHz,即每秒执行24M个时钟周期。
2. **循环计算**:`i = 24M / 10000`,表示每个内循环执行2400次,每次循环消耗10个时钟周期(10T),因此内循环总耗时为:
   \[
   2400 \times 10T = 24000T
   \]
   对应时间:
   \[
   \frac{24000T}{24M} = 1ms
   \]
3. **外循环控制**:`ms`参数控制外循环次数,`delay_ms(250)`即执行250次内循环,总延时为250ms。

总结:通过精确计算循环次数与时钟周期,实现了1ms的延时,并通过参数`ms`控制总延时时间。

[本文内容由国芯人工智能辅助生成,仅供参考]

小涵子爸爸 发表于 2025-3-8 09:02:00

AI将控制全世界

llyymm 发表于 2025-3-8 12:33:35

wnagming 发表于 2025-3-8 07:52
这人工智能要霸屏啊

哈哈{:ciya:}

wangxiangtan 发表于 2025-3-9 08:37:28

很明显不是1ms啊,除法和do while跳转自身也要消耗时间的
页: [1] 2
查看完整版本: 这个句子是怎 样计时到1MS