侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

迷你灯带控制器代码说明

Z_Tam
2023-02-05 / 0 评论 / 1 点赞 / 760 阅读 / 3469 字

BootLoader UF2移植

  • BootLoader 跳转 APP 函数。


  • 初始化 RTC备份寄存器USBFLASHUF2
    • RTC备份寄存器:APP 复位后把延时等待参数回传给 Bootloader
    • USB:给 UF2 提供底层硬件服务。
    • FLASH:用于擦除和重写APP所在的flash
    • UF2:提供模拟U盘和 .uf2 文件解包功能。


APP配置

  • 通过分散加载文件实现 APP 固件的偏移。


  • 通过修改 ini 文件实现 APP 进入 debug 的时候能正确停在 main 函数。


  • 最后需要修改中断向量表,使 APP 的中断正常被触发。
NVIC_SetVectorTable(FLASH_BASE, VECT_TAB_OFFSET);

按钮驱动

  • 按键功能使用开源的 multi_button 驱动。


  • 初始化按键驱动,并在 1ms 定时器中断中添加 button_ticks();函数给按键类型检测提供准确的节拍计算。


灯带驱动逻辑

  • 灯带通过单链表记录每一个灯带的参数。


  • 在循环中通过遍历单链表,当链表中的设定的节拍超时后,调用对应的灯带控制算法计算出下一帧的颜色,并在对应通道中输出。


通道初始化

  • 通过宏定义简化了初始化参数,参考下图即可设置初始化参数。


  • 灯效算法通过数组的形式返回计算结果,因此多通道可复用同一灯效算法,并且可根据延时节拍的不同以不同的速度显示。


通道链表

  • 通道链表控制参数。


算法链表

  • 算法链表控制参数。


双链表绑定

  • 通过对 通道链表算法链表 的遍历实现对灯效算法的绑定。


UF2自动构建

  • keil 的设置中添加编译后生成 bin 文件配置,并调用生成的 exe 文件将 bin 文件打包生成 uf2 文件。


  • bin 文件打包成 uf2 程序。


1

评论区