mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
761 字
2 分钟
sed_control电赛控制库实现
sEvilDragon
/
sed_control
Waiting for api.github.com...
00K
0K
0K
Waiting...
NOTE

目前主要更新ti_m0g3507相关实现

说明#

  1. 所有库文件使用cpp17以上版本才可以通过编译
  2. 所有库使用已在每个库下的README.md中说明,本博客主要记录写代码时遇到的问题及相关解决方案

配置外部时钟导致单片机无法启动#

应该是ti_m0g3507的bug或者官方代码没有考虑到位导致的问题,需要在时钟树选择外部高速晶振选项将HFXT Startup Time选项调为10,也就是延时晶振起振时间。

空闲中断异常#

原因是ti或者说大部分带有fifo的单片机空闲中断要求总线空闲同时fifo不为空,如果接收不定长消息的长度恰好是fifo缓存的整数倍就会导致fifo为空而无法触发空闲中断,也就是说stm32中使用空闲中断配合dma实现串口不定长接收的思路在m0g3507中是走不通的。

DMA事件无法启用#

对应的中断没有打开。

中断进不去或者中断导致单片机卡死#

  1. 中断没有触发或者没有在syscfg中打开。
  2. 中断IRQ函数名写错了。
  3. 中断内部switch_case对应的中断宏定义错误。

需要说明的是:

  1. 捕获中断的UP和DOWN就是对应了计数方向,不是捕获边沿的选择,是计数方向的选择!

SPI片选说明#

ti要求必须有一个硬件托管的片选,但是ti硬件片选的逻辑是fifo不为空时拉低,这意味着如果使用fifo那么m0最大fifo深度为4,也就是说硬件片选在不使用dma的情况下一次只能发送最多4字节消息,否则会因为CS不断被拉低拉高导致中间的信息中断。官方明确说明,如果长度大于4字节需要使用dma,代码中未激活dma的场景是使用软件CS代替的。

cmsisdsp库引入问题#

使用syscfg引入cmsisdsp库,但是引入后编译器不会自动链接,需要手动包含路径

定时器方向#

由于m0的定时器中断是置零中断,所以默认使用下降计数模式,包括编码器模式。

ADC配置完成后没有读取值#

注意syscfg默认的sampletime实际是0,需要自己配置一下,注意正常情况下即使默认sampletime配置为0,MEM配置每个通道时仍然会显示一个时间,因为那个是两个时间的和,即使一个为0,另一个也会存在。

ADC只会读取一个值#

注意syscfg只在开启扫描模式时才可以读取多个adc的值,否则只会读第一个值,即使使能了多个MEM

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

sed_control电赛控制库实现
https://mizuki.mysqil.com/posts/sed_control电赛控制库实现/
作者
sEvil_Dragon
发布于
2026-07-12
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录