STM32作为使用相当广泛的一种单片机,在产品开发方面也有大量应用,新手少不了遇到各种下不进程序的可能原因,可按以下几项挨个检测(基于keil和STlink的开发环境)
万金油瞎试解决法:
1.拔掉下载器重插(既包括下载器同芯片、也包括下载器同电脑)
2.按着复位点下载,点完下载松开
3.上电后复位下看看跑不跑,有可能没设置reset and run
4.有核心板的话把核心板从底板上拆下来只对核心板下载试试
5.芯片断电再上电(重启)
6.在线调试试试能不能跑,有时在线调试能跑,板子上电自己跑不行
解决思路:
1.先看是不是下载器或电脑上keil配置的问题------先看电脑上能不能正确识别到stlink,有的话驱动没问题
2.再看是不是板子上哪里出现的问题-----看看keil能否正确识别到芯片,能则下载器连接没问题,有问题就是32的
3.看看是不是下载线的连接有问题
环境配置类:
1.首先检查程序是否编译通过,不能有error
2.检查flash算法是否配套,programming algorithm
没有时会报 cannot load flash programming algorithm !(STM32)
3.是否安装对应型号芯片的DFP,即是否安装对应系列的pack包
4.STlink是否正确连接(有的USB线里面没有数据线,只能充电),是否有驱动,电脑设备管理器中是否有STlink设备(不带感叹号的)
5.出现STlink connect error -----拔掉下载器,重插(同电脑间的连接)
电路问题:
1.下载接口短路到别的地方,或直接没有焊接到别的接口
2.复位电路有问题,上电没有拉到对应电平,拆掉复位电路
3.boot电路不行可以下程序,但是运行不了
4.晶振电路不行有时可以下程序,但是程序运行不正常
5.程序里面有对晶振频率的定义,程序和晶振不对应会导致运行不正常,引脚电平无法控制
6.单片机有没有烧掉,3.3v和负极导通基本宣判死刑,这是肯定下不进程序
7.芯片其他引脚焊接,供电是否正常
8.假芯片等等其他可能的原因
编程问题:
1.程序不运行卡死:可能原因很多,只写能想到的
2.之前用官方库:串口初始化后直接用中间不加延时不行,会卡死
3.使用特定模块上电不运行,之前用过假芯片,使用tim3,一种芯片上电就能跑,另一个货源的上电不跑