1. CubeMx配置
- 配置好系统时钟之后
- 更换时钟源
最好用功能较少的定时器,这样可以节省宝贵资源 - 打开freertos
- 默认的配置都不用改,增加任务
- 修改栈的大小
2. 代码编写
可以看到freertos.c
文件下有两个task函数,对里面进行编辑即可
3. 体会
- 在之前的学习中,我认为的是:多线程就像是一个定时器中断,优先级高的去打断优先级低的,随后放进主线程里面进行工作,所以不引入操作系统的话有多少个定时器就有多少个task,所以这样的想法也没办法解决如果我要边播放bgm边进行游戏的操作,因为无论如果你的延时也会卡在延时里面,这跟轮询差不多,只是可以根据特定的条件去调整时序,反而像之前训练营作业的用户交互,通过死循环和break实现
- 但是这次的学习中,我发现用了操作系统的时候两个灯可以同时在闪烁,跟自己把两个闪烁的任务复制进去主循环是不一样的,所以猜想是:多线程中延迟时会把任务挂起,随后其他的操作去抢占主线程然后执行应该执行的东西