| 情景一,Keil的Project Option->Debug->Settings里面, reset方法选的是HWRESET,
 通常硬件reset后,所有断点也会reset, 因此程序启动后会自由跑,不会停在main.
 解决办法:将reset方法改为Autodetect或SysResetReq通常能解决问题。
 
 情景二,编译连接的时候,main函数被link到了RAM区域。
 造成main不能被"断住"的原因是,运行到main之前,程序会将自身从ROM复制到RAM,
 于是连同设定在main位置处的断点也一并覆盖掉了。
 解决办法: 改写scatter文件,或使用简单link办法,确保main函数被link在ROM中。
 注:以芯唐(Nuvoton) NUC1xx系列芯片,ROM的起始映射地址为0,
 RAM的起始映射地址为0x20000000
 
 |