请问STM32F10x.S和stm32f10x_vector.S的异同点?
如题.
为什么有的例程中用STM32F10x.S作启动代码,而有的却用stm32f10x_vector.S做启动代码呢?
先顶一下
这两个文件好像都是用来设置CP,SP和向量表的,只是觉得不用中断的时候就用STM32F10x.S作启动;当用到中断时,要用stm32f10x_vector.S作启动代码.
错,
首先,在主函数里设置中断,如下。
void NVIC_Setting(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/* Enable the TIM1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
然后
void TIM1_UP_IRQHandler(void) __irq
{
//你的代码。
}
就可以了。
楼主用的是什么工具?你什么时候要使用这个文件?
看到过stm32f10x_vector.s,但没看到过stm32f10x.s。
我用的工具是RealView MDK
我用的工具是RealView MDK.
每次创建一个工程项目时,系统提示:"是否加载启动代码?"
选择"是",则在工程下的文件组中自动添加了stm32f10x.s文件.
在应用的过程中,觉得不用中断的时候就用STM32F10x.S作启动;当用到中断时,要用stm32f10x_vector.S作启动代码.因为先前我自己编写和调试的一些程序,仅仅用到了RCC,GPIO,用STM32F10x.S做启动代码,可以正常编译运行.后来程序中用到了NVIC,EXTI,SysTick关于中断的外设,用STM32F10x.S就不行了,无法编译.我试着用了stm32f10x_vector.S做启动代码,结果正常编译运行.
我大致看了这两个文件,好像都是用来设置CP,SP和向量表的.有很多相似之处.
关于3楼的回答,我没看懂??!
关于版主主的提问,我做了如上解释.估计大家用的工具多是IAR的EWARM吧.
你那个是RVMDK自动生成的启动代码,创建的时候不要用它,用固件库中的
一直在用stm32f10x_vector.s,在安装keil是确实会生成stm32f10x.s
但是一直都没有使用,以前比较过两个文件的差异
只是都是汇编,没怎么看明白
也搭个顺风车,看看高手的解答,谢谢咯
学习了。
那以后就直接用stm32f10x_vector.s。
这文件一般情况,不需要做更改了吧。