for 循环延迟

第一个挑战是在不使用任何外围设备的情况下实现delay功能,显而易见的解决方案是将其实现for循环延迟:

#![allow(unused)]
fn main() {
#[inline(never)]
fn delay(tim6: &tim6::RegisterBlock, ms: u16) {
    for _ in 0..1_000 {}
}
}

当然,上述实现是错误的,因为它总是为ms的任何值生成相同的延迟。

在本节中,您必须:

  • 修正delay函数以生成与其输入ms成比例的延迟
  • 调整delay函数,使LED轮盘在4秒内以大约5个周期(800毫秒周期)的速度旋转。
  • 微控制器内的处理器的时钟频率为72MHz,并在一次"tick"中执行大多数指令。您认为延迟函数必须执行多少(for)循环才能产生1秒的delay
  • delay(1000)实际执行多少个for循环?
  • 如果以发布模式编译程序并运行它会发生什么?