STM32G0开发板下载代码问题

任务:

通过CueMX生成代码,然后烧写到STM32G0开发板上。

遇到的问题:

1. CubeMX生成的代码能用Keil编译,但是下载不到flash中

2. CubeMX再次生成代码后,SWD无法识别芯片。

逐个击破:

1. CubeMX生成的代码能用Keil编译,但是下载不到flash中

编译后,点击keil的debug后者download图标,无法下载,报没有flash算法。

既然报没有flash算法,那就去debug配置那里,选择flashdownload,的确没有选择算法

STM32G0开发板下载代码问题_第1张图片

既然没有选择flash算法,那就add一个。

add的时候发现没有STM32 G0对应的flash算法。随便选择一个也是不能烧写的。那应该是必须选择适合STM32G0内falsh的算法。

STM32G0开发板下载代码问题_第2张图片

回想一下,这一台电脑第一次烧STM32 G0的,应该是没有装G0对应的pack。

点击“魔法棒 - Device”一看,确实没有G0对应的芯片

立马安装对应pack(选中G0的pack,无脑下一步安装就行了) 

STM32G0开发板下载代码问题_第3张图片

官网下载都是很慢的,我都是网站找好别人下载的,哈哈哈哈

 安装完后,重新打开keil工程。果然,芯片那里就有了G0芯片,算法选择那里也有了对应的G0的falsh算法。

STM32G0开发板下载代码问题_第4张图片

至此,烧写正常了!!! 

2. CubeMX再次生成代码后,SWD无法识别芯片。

由于没有开发板原理图,不知道LED对应哪个GPIO,改用串口输出打印,测试代码运行情况。CubeMX上选择uart1使能,配置相关串口参数,如异步、波特率,停止位等,这样PA9,PA10就复用成了uart1功能,重新生成代码后,重写f_putc函数,添加prtinf打印,再次编译,下载。

printf实现参考:

STM32使用printf函数的步骤和注意事项_stm32 printf_石头牛的博客-CSDN博客

无奈下载时说找不到设备,又无法下载了!!!

最终,点击debug的时候,发现STlink设备确实没有找到!!!

回想一下,我用的是Jlink,不应该是STlink,报错不是正常吗?!再次选择Jlink,终于烧写成功。

思考为什么会变成STlink??

---CubeMx重新生成代码,配置项会变回STlink!!

---CubeMx重新生成代码,部分代码会被恢复,不想自己辛辛苦苦写的代码被覆盖掉,那就要按照CubeMx的规则,将自己的代码写在两个注释之间,这样CubeMx重新生成代码时就不会覆盖自己的部分。

如:

/* USER CODE BEGIN  */

MyCode...

/* USER CODE END  */

你可能感兴趣的:(stm32,单片机,嵌入式硬件)