请问STM32F10x.S和stm32f10x_vector.S的区别

[复制链接]
8825|9
 楼主| lpdyd 发表于 2008-4-7 13:48 | 显示全部楼层 |阅读模式
请问STM32F10x.S和stm32f10x_vector.S的异同点?

如题.

为什么有的例程中用STM32F10x.S作启动代码,而有的却用stm32f10x_vector.S做启动代码呢?
 楼主| lpdyd 发表于 2008-4-7 13:54 | 显示全部楼层

先顶一下

这两个文件好像都是用来设置CP,SP和向量表的,只是觉得不用中断的时候就用STM32F10x.S作启动;当用到中断时,要用stm32f10x_vector.S作启动代码.
21班猪 发表于 2008-4-7 19:40 | 显示全部楼层

错,

首先,在主函数里设置中断,如下。
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
{
//你的代码。
}

就可以了。
 
mcubug 发表于 2008-4-7 20:42 | 显示全部楼层

还没整到这地方

香水城 发表于 2008-4-8 08:32 | 显示全部楼层

楼主用的是什么工具?你什么时候要使用这个文件?

看到过stm32f10x_vector.s,但没看到过stm32f10x.s。
 楼主| lpdyd 发表于 2008-4-8 09:26 | 显示全部楼层

我用的工具是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吧.
xiepengchenghn 发表于 2010-5-30 21:42 | 显示全部楼层
6# lpdyd
你那个是RVMDK自动生成的启动代码,创建的时候不要用它,用固件库中的
maomao2126 发表于 2010-5-30 22:41 | 显示全部楼层
一直在用stm32f10x_vector.s,在安装keil是确实会生成stm32f10x.s
但是一直都没有使用,以前比较过两个文件的差异
只是都是汇编,没怎么看明白
也搭个顺风车,看看高手的解答,谢谢咯
zjswuyunbo 发表于 2010-5-31 14:04 | 显示全部楼层
学习了。
那以后就直接用stm32f10x_vector.s。
这文件一般情况,不需要做更改了吧。
2009chinalj 发表于 2013-5-18 10:51 | 显示全部楼层
stm32f10x。s 文件一般是在用户定义的启动代码,需要我们去修改
打开stm32f10x。s 可以看到很多中断向量后有一个 [WEAK] 表示没有定义中断向量时编译时也不会给出错误只是程序停留在接着的语句B。
每个库有自己的stm32f10x_vector.s  这是要注意的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部