[经验] 使用STM32CUBE生成代码踩埪(SWD锁死)解决方法探讨

damiaa   2020-8-4 09:27 楼主

使用STM32CUBE生成代码踩(SWD锁死)解决方法探讨

昨天用STM32CUBE生成代码

1,SWD因为以前一直不定义它也可以用。所以这次也没定义

2.png

2,这次定义了不用的IO口的处理方法。看下面图的红色部分 如果不用这个应该不会锁死

1.png

3,生产代码烧录。结果给锁死了。烧录不进去了。

4,无奈,把BOOT1 BOOT0设置为 0,1直接启动内部系统存储器程序,再擦除。

     BOOT1=X BOOT0=0  从用户闪存(flash)启动,这时正常模式  较多情况下使用这种模式

     BOOT1=1  BOOT0=1 从内置SRAM(内存)启动,这种模式可以用于调试

     BOOT1=0 BOOT0=1 从系统存储器启动, 这种可以用于调试

这样就可以烧录了。

5,为了避免重复锁死老路。SWD直接在IO口显示定义为用于SWD。再生成代码编译再烧写进去。

3.png 6,BOOT1 BOOT0恢复设置为:BOOT1=X BOOT0=0 正常模式 后

多次调试和烧写没出现过了锁死现象了。

 

因为出现这个问题。所以分享一下。大家一起讨论。免走弯路。

 

本帖最后由 damiaa 于 2020-8-4 09:34 编辑

回复评论 (14)

我刚好也在用这个片子,玩玩rtos。。

 

我记得之前用103的时候,low pin的,io不够,只能把swd的接口映射为普通io来用,下载程序,都是先按住复位,keil上可以识别到器件,然后点击下载flash,这时候下载程序是等待复位撤销中,在超时前松开复位就可以把程序烧进去了。。。

 

 

坐而言不如起而行
点赞 (1) 2020-8-4 09:53
wsmysyn 发表于 2020-8-4 09:53 我刚好也在用这个片子,玩玩rtos。。   我记得之前用103的时候,low pin的,io不够,只能把swd ...

这个板子没接复位,直接的用的RC电路。所以没试那种方法。应该也是可以。只是锁死的原因还是要找到去掉。

这个405RG芯片好,内存大资源多。TPYBoard 板子就是用这个芯片。还可以跑mpython呢。哈哈。所以我把它搞到产品里。而且还可以拿来玩。

本帖最后由 damiaa 于 2020-8-4 10:08 编辑
点赞  2020-8-4 10:04

没接复位就比较尴尬了,方便的话,我会用镊子直接去短rc,不方便就飞根线,

 

不过突然不能那么用,是版本更新了?,默认把一些管脚给设置了,估计翻到底层应该能找到答案,肯定是设置过了才会变,我目前就是用cube生成一个没有什么实际功能的工程,然后还是自己往上添加代码,类似于以前标准库的方式,暂时没遇到swd被改的问题。

坐而言不如起而行
点赞  2020-8-4 10:28
引用: damiaa 发表于 2020-8-4 10:04 wsmysyn 发表于 2020-8-4 09:53 我刚好也在用这个片子,玩玩rtos。。   我记得之前用103的时候,low ...

嗯,主频也不小,168M,192k ram+1M flash确实很大,可玩空间很大,可以折腾,,想着慢慢玩玩,,计划也是用在后面的测试项目上,需要做一个SLT测试,用来当做板上主控,跑个系统,pc上可以控制台发命令,比较爽

坐而言不如起而行
点赞  2020-8-4 16:14

谢谢楼主分享~

玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2020-8-4 17:03

default的引脚就是作为swd,改了当然就做其他用途了。自然史不行的。

默认摸鱼,再摸鱼。2022、9、28
点赞  2020-8-4 19:18
wsmysyn 发表于 2020-8-4 10:28 没接复位就比较尴尬了,方便的话,我会用镊子直接去短rc,不方便就飞根线,   不过突然不能那么 ...

stm32CUBE有一个 定义了不用的IO口的处理方法 主要为了省电用的。

定义这个估计可能会锁死。 我的就这样锁死了。显示的定义SWD为做SWD用就没这个问题了。

点赞  2020-8-5 09:29
引用: damiaa 发表于 2020-8-5 09:29 wsmysyn 发表于 2020-8-4 10:28 没接复位就比较尴尬了,方便的话,我会用镊子直接去短rc,不方便就飞根线 ...

嗯,所以也是个坑,不注意就掉进去了

坐而言不如起而行
点赞  2020-8-5 09:45
wsmysyn 发表于 2020-8-4 16:14 嗯,主频也不小,168M,192k ram+1M flash确实很大,可玩空间很大,可以折腾,,想着慢慢玩玩,,计划也 ...

用STM32CUBE折腾吧。或者用rt-thread都可以。

STM32CUBE和新的HAL库做起来比老的库有意思一些。

比如串口中断。基本上配置好了。你只要调用一下生成好的初始化库,开启一下中断。中断配置回调函数。然后中断里面什么都不用处理。

直接写个已经命名好的回调函数。里面加东西就好了。所有串口中断都可以在这个回调函数中处理。

QQ图片20200805101131.png

QQ图片20200805101113.png

方便多了 以前一直用库。现在准备彻底换过来了。

 

本帖最后由 damiaa 于 2020-8-5 10:14 编辑
点赞  2020-8-5 10:12
引用: damiaa 发表于 2020-8-5 10:12 wsmysyn 发表于 2020-8-4 16:14 嗯,主频也不小,168M,192k ram+1M flash确实很大,可玩空间很大,可以 ...

嗯,那种开发效率很高,不用关心太多底层。

 

不过我不喜欢这种一键式的。 主要不做产品开发,多数时候是自己学习

我还是喜欢折腾一下,我们是做芯片的,很多时候没有这种现成的,都是自己去怼驱动,比较习惯这种方式。。。

坐而言不如起而行
点赞  2020-8-5 10:20
wsmysyn 发表于 2020-8-5 10:20 嗯,那种开发效率很高,不用关心太多底层。   不过我不喜欢这种一键式的。 主要不做产品 ...

也不呢。底层驱动还是要做。只是效率高写。能做的事情多些。不妨碍你对底层驱动的关心。比如在rt-thread 你可以做驱动分享给别人。

本帖最后由 damiaa 于 2020-8-5 10:23 编辑
点赞  2020-8-5 10:22
damiaa 发表于 2020-8-5 10:22 wsmysyn 发表于 2020-8-5 10:20 嗯,那种开发效率很高,不用关心太多底层。   不过我不喜欢这种一键 ...

只要是不喜欢用cube这种,,,

我就算觉得太方便了,不是很好

本帖最后由 wsmysyn 于 2020-8-5 10:45 编辑
坐而言不如起而行
点赞 (1) 2020-8-5 10:43

有次PA14 复用成IO  要用镊子短接电容 下载。。。

点赞 (1) 2020-8-6 11:10
这个要注意:仔细看芯片数据手册.
点赞  2020-8-7 08:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复