MSPM0G3507 + ST-Link 烧录
为什么用这个烧录,为什么能烧录
没钱。
避开了PDSC: Sequence Execution failed这类兼容问题。
之前报错的核心原因:
- 工程是
MSPM0G3507 - 调试器用的是
ST-Link - TI 的 MSPM0 Device Pack 里带的调试序列,和当前这套
ST-Link组合不完全兼容 - 所以会出现:
PDSC: Sequence Execution failedDAP access error - command not supported- 偶发 DFU 相关提示
实际操作
改动 1:关闭 Pack 调试描述
在uvoptx里,
C:\ti\mspm0_sdk_2_10_00_04\examples\nortos\LP_MSPM0G3507\driverlib\gpio_toggle_output\keil\gpio_toggle_output_LP_MSPM0G3507_nortos_keil.uvoptx
把:
<DebugDescription><Enable>1</Enable>改成:
<DebugDescription><Enable>0</Enable>作用:
- 不再强制走 MSPM0 Device Pack 里的那套调试初始化序列
- 改为让
ST-Link走更通用的 SWD 连接流程 - 这一步是解决
PDSC sequence execution failed的关键
改动 2:降低调试时钟
在uvoptx里把:
<DbgClock>5000000</DbgClock>改成:
<DbgClock>100000</DbgClock>作用:
- 把调试时钟从 5 MHz 降到 100 kHz
- 降低 ST-Link 首次连上 MSPM0 时的失败概率
- 对接线一般、复位时序敏感、兼容性边缘场景更稳
改动 3:关闭“进入调试前自动下载”
在uvprojx里把:
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>改成:
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>作用:
- 避免一进 Debug 就自动触发一整套下载+调试初始化
- 先单独
Load/Download烧录,更容易定位问题 - 这对绕开调试阶段的兼容报错有帮助
STlink版本问题
一定要更新ST-Link 固件版本。
不然也搞不进去。
后续在 Keil 里建议这样用
建议配置:
Options for Target -> Debug -> ST-Link DebuggerSettings -> Port = SWReset优先试:Connect under Reset- 或
Hardware Reset
- 不要一开始就进 Debug
- 先点工具栏里的
Load/Download
推荐顺序:
- 打开工程
- 编译
- 点
Load/Download - 确认能烧进去
- 再尝试进入 Debug
如果以后又出现类似报错
如果再次出现下面这些报错:
PDSC: Sequence Execution failedDAP access error - command not supportedFlash Download failed
优先检查:
Pack Enable有没有又被勾回去DbgClock有没有被改高Reset模式是否正确- 是否误切回了别的调试器
Keil退出时有没有覆盖工程配置
一句话总结
这次能烧录成功,关键不是升级固件,而是:
把 Keil 工程改成了更适合MSPM0G3507 + ST-Link的配置,核心是关闭 Pack 调试描述、降低调试时钟、关闭进入调试前自动下载。
记得按一下复位
为什么要这样
在MSPM0G3507 + ST-Link + Keil这套组合下,比较容易出现下面这种情况:
- 下载成功
- 但目标芯片没有立即跳转到用户程序稳定运行
- 手动按一次
RST后,芯片重新从 Flash 启动,程序才开始正常执行
这意味着什么
以后如果你看到:
- 烧录成功
- Keil 没报错
- 但是灯不亮
不要第一时间怀疑代码错了。先做这个动作:
- 按一下板子的
RST - 观察 LED 是否开始闪烁/点亮
如果按RST后恢复正常,就说明:
- 程序大概率已经烧录成功
- 只是复位后的启动过程不够稳定
后续建议
为了减少这种情况,Keil 里建议继续这样使用:
Debug -> Settings -> Port = SWReset优先选:Connect under Reset- 或
Hardware Reset
- 先
Load/Download - 下载后如果程序没跑,手动按一次
RST
对这次现象的最终判断
这次 LED 最终恢复正常,说明:
- 例程引脚没问题,
LED1就是PB22 - 烧录本身也已经成功
- 真正影响你观察结果的是复位后程序启动时序,不是代码逻辑错误