具体排查问题点 | 具体方案 |
VDDA电压、VDD电压是否正常 | 如果电压是3.3V,可以使用万用表测量到3.32V |
常见的电容是否连接上 |
对照最小系统电路,常见的稳压电容、滤除高频噪声信号的电容是否按推荐电路设计
|
复位电路 | 复位引脚电压是否为高电平、复位电路是否是按照手册常规电路 |
Boot电路 | Boot0引脚连接GND(虽然不会影响识别J-Link,也一起附加检查) |
时钟电路 | HSE时钟电路是否按照参考电路设计(如果有使用的话,也附加一起检查) |
JTAG电路 | JATG电路是否按照推荐的设计 |
具体排查问题点 | 具体方案 |
因为pack冲突,会显示无法下载 | 选择MCU对应的型号、对应的Flash烧录文件烧录 |
Flash读写保护,无法下载 |
a、可通过J-Flash的解除写保护
b、调整Boot引脚,从系统存储区启动,连接ISP软件,擦除选项字节中的写保护
c、编写“擦除修改选项中的写保护”代码,将代码烧录至SRAM运行(比较麻烦,建议使用上述2中)
|
具体排查问题点 | 具体方案 |
Flash等待周期异常 |
(1)超频情况下
例如,超频到120MHz时,需要配置4-5个Flash的等待周期
(2)降频情况下
例如频率降低到48MHz时,先进行时钟复位,Flash等待周期需要重新配置为1,而实际代码忘记配置。
|
数组越界访问 |
例如,明明定义了10个成员变量的数组,在读写时超过10个,此时会进入HardFault_Handler。
|
栈设置的太小 |
例如:调用的函数中定义了大的数组,但这个数组的范围大于栈的大小,程序在运行过程中可能会栈异常,进入HardFault_Handler。
可在startup_apm32f10x_hd.s文件中,结合MCU的SRAM大小、全局变量和静态变量的占用空间、程序中定义的局部变量代销调大Stack_Size。
|