最近在学习ARM单片机的bootload引导模式,单片机是ST公司生产(基于Cortex-M3内核),型号为STM32F103ZET6。根据资料介绍有3种引导模式,于是自己在开发板(红牛3代开发板)上测试。我是一个初学者,测试主要是了解它的引导模式和内存映射状况。但是在SRAM引导模式下调试程序时就出现了下面的问题,弄了一段时间还是不明所以,还望各位前辈指导。 故障:SRAM启动模式,调试程序时Delay延时出错 测试目的:使用SRAM启动模式,调试程序,使得单片机进行LED灯闪烁,灯亮延时1ms,灯灭延时1ms。 故障现象:单片机设置为SRAM启动模式,程序烧录后,进行Deug,可以实现LED的亮灭,但是在延时时间上出现错误,通过示波器查看延时时间为8.2ms闪烁1次。之前使用Flash启动模式测试过LED,延时时间为1ms。 不知问题是什么原因造成,使用内置SRAM启动模式步骤及相关配置是否有问题? 使用SRAM启动模式步骤: 修改ROM,RAM分区: 然后添加ram配置文件: 配置向量表偏移寄存器内容(定义VECT_TAB_SRAM): 配置调试数据:
delay程序入下:
//
// 代表每毫秒Delay函数内的for循环次数
// 基于72MHz内核时钟的ARM单片机STM32F10X
//
#define CYCLES_PER_MS ((uint16_t)8200)
void Delay (uint16_t nMilliseconds)
{
uint16_t nCycles;
while (nMilliseconds--) {
for(nCycles = 0; nCycles < CYCLES_PER_MS; nCycles++); // Delay one millisecond
}
}
|