startup_stm32f10x_md.s更换为startup_stm32f10x_hd.s的困惑
芯片由STM32F103v更换为STM32F103ZET后 启动文件由startup_stm32f10x_md.s替换为startup_stm32f10x_hd.s后,问题随之出现
1 未更换启动文件即由startup_stm32f10x_md.s在芯片STM32F103ZET上也可以运行正常
2 但更换为startup_stm32f10x_hd.s后反而工作出错了
难道更改启动文件后还要做其他改动?
程序是读写SD卡程序
望高手点拨 谢了
[最优解释]
中断向量表有没有改?估计你用到什么中断什么的以前改过,新版本忘记改了,比如:
新版本
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler
DCD NMIException
DCD HardFaultException
DCD MemManageException
DCD BusFaultException
DCD UsageFaultException
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVCHandler
DCD DebugMonitor
DCD 0 ; Reserved
DCD PendSVC
旧版本
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler
DCD NMIException
DCD HardFaultException
DCD MemManageException
DCD BusFaultException
DCD UsageFaultException
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVCHandler
DCD DebugMonitor
DCD 0 ; Reserved
DCD OS_CPU_PendSVHandler;
对比最后一行,新版本自动生成,而旧版本用的是操作系统,中断向量不同。
还有就是堆栈的大小需要自己改,看看是否忘记改了如:
Stack_Size EQU 0x00002b00
以上问题是我自己碰到的,看看对你有没有帮助。
[其他解释]
如果两个芯片的资源和FLASH大小是一样的,那个启动文件其实也可以不用变