打印

为什么要选择启动文件?【讲的很好】

[复制链接]
1618|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecintop|  楼主 | 2015-5-20 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.建立中断服务入口地址,即把中断向量与中断服务函数链接起来。

我们知道在串口NVIC配置中我们只定义了个   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

也就是中断服务向量,再然后我们在stm32f10x_it.c文件的void USART2_IRQHandler(void){} 函数里添加串口的服务程序。

     但是mcu怎么知道中断向量USART2_IRQn对应的是USART2_IRQHandler(){}呢,这个就是启动文件所起的作用。

在启动文件  .s  中 以   g_pfnVectors:  开头。

沙发
elecintop|  楼主 | 2015-5-20 16:30 | 只看该作者
2.从systeminit()函数进入到main()函数.

对于stm32我们定义系统时钟的时候直接在system_stm3210x.c文件里修改宏定义即可,而事实上到底是从哪开始执行的呢?

system_stm3210x.c文件里有个SystemInit()函数,就是对时钟的设置。

而这个SystemInit()在哪调用的呢,就是启动文件先调用了,然后才进入到mian()函数。

在启动文件  .s  中有以下一段话可以解释。

/* Call
the clock system intitialization function.*/

  bl  SystemInit

/* Call static constructors */

  bl __libc_init_array

/* Call the application's entry point.*/

bl main

bx lr

使用特权

评论回复
板凳
蜕变吧| | 2015-6-21 09:19 | 只看该作者
启动文件是灵魂,在里面完成了系统的初始化过程。

使用特权

评论回复
地板
tongbu2015| | 2015-6-21 21:35 | 只看该作者
NVIC配置中我们只定义了个   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

也就是中断服务向量,再然后我们在stm32f10x_it.c文件的void USART2_IRQHandler(void){} 函数里添加串口的服务程序。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

1329

帖子

3

粉丝