BootLoader UF2移植
- 初始化
RTC备份寄存器
、USB
、 FLASH
和 UF2
。
- RTC备份寄存器:
APP
复位后把延时等待参数回传给 Bootloader
。
- USB:给
UF2
提供底层硬件服务。
- FLASH:用于擦除和重写
APP
所在的flash
。
- UF2:提供模拟U盘和
.uf2
文件解包功能。
APP配置
- 通过修改
ini
文件实现 APP
进入 debug
的时候能正确停在 main
函数。
- 最后需要修改中断向量表,使
APP
的中断正常被触发。
NVIC_SetVectorTable(FLASH_BASE, VECT_TAB_OFFSET);
按钮驱动
- 按键功能使用开源的
multi_button
驱动。
- 初始化按键驱动,并在
1ms
定时器中断中添加 button_ticks();
函数给按键类型检测提供准确的节拍计算。
灯带驱动逻辑
- 在循环中通过遍历单链表,当链表中的设定的节拍超时后,调用对应的灯带控制算法计算出下一帧的颜色,并在对应通道中输出。
通道初始化
- 通过宏定义简化了初始化参数,参考下图即可设置初始化参数。
- 灯效算法通过数组的形式返回计算结果,因此多通道可复用同一灯效算法,并且可根据延时节拍的不同以不同的速度显示。
通道链表
算法链表
双链表绑定
- 通过对
通道链表
和 算法链表
的遍历实现对灯效算法的绑定。
UF2自动构建
- 在
keil
的设置中添加编译后生成 bin
文件配置,并调用生成的 exe
文件将 bin
文件打包生成 uf2
文件。
评论区