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循环?- 如果以发布模式编译程序并运行它会发生什么?