作业 1 和 2 主要使用定时器的中断功能。
作业1
作业 1 我并不会使用软件延迟完成,否则会影响主循环中检查按键。因此使用了多达 3 个时钟,每个时钟管一件事,根据按键动作决定谁动谁不动,有点蠢。
至于同时按下 2 个按键,我只好自己写了一个函数,可以一并返回多个按键的状态。
项目地址:
https://coding.net/u/ufoshen/p/STM32-homework1/git?public=true
作业2
让用时钟 TIM2,然而只用这一个我做不到,因为呼吸灯要依靠输出 PWM+调节占空比才能实现,PWM 需要映射到 LED0 所在的 PB5 上,这个根据我查表的结果,是不能直接重映射过去的。因此 PWM 就用 TIM3 来输出了。
然后 TIM2 身兼多职,在不同模式下干不同的事情,反转灯、反转蜂鸣器、修改占空比。用了三个全局变量,方便多了。
地址:
https://coding.net/u/ufoshen/p/STM32-homework2/git?public=true
这是我第一次写嵌入式,也不太了解工作的深层原理,只是先参考书上的案例,自己比葫芦画瓢,把功能实现了出来。
欢迎批评指正喵!