打印

STM32如何从sram中启动的修改

[复制链接]
7792|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
飞鹰嵌入式|  楼主 | 2012-3-5 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 飞鹰嵌入式 于 2012-3-5 15:16 编辑

刚开始学习stm32肯定会遇到怎么下载程序,怎么跑程序的问题,一般的都只是介绍启动方式,就是如下:Stm32的启动方式Boot0 Boot1 00sram start0      1ststerm boot start1 1      flash start我来介绍一下具体怎么设置,怎么操作才能达到这样,因为这个问题我也弄了好几天,纠结了几天,环境:MDK硬件:stm32开发板
1、现在来说一下flash start,只要把boot0设置成1就可从flash启动,然后连接jlink,     关键就是代码中的问题:   /******************************************************************************** Function Name  : NVIC_Configuration* Description    : Configures Vector Table base location.* Input          : None* Output         : None* Return         : None*******************************************************************************/
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM    /* Set the Vector Table base location at 0x20000000 */       NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */  /* Set the Vector Table base location at 0x08000000 */   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif}
一般的程序都会有这段,只要没有宏定义VECT_TAB_RAM ,则程序就被设置成在flash里启动然后在MDK里面如下设置我是用的将link下载的,所以选择的是上面的cortexm3-jlink。以上是在falsh里启动的介绍,这样掉电上电后可以正常运行的。
2、下面是说如何在sram中启动,因为在调试阶段最好都在sram里面调试,这样可以对flash进行有效的保护,而且调试下载速度比较快,节省时间。环境:MDK硬件:stm32开发板硬件中必须跳线到boot0 和boot1都为0,还是这段代码:  /******************************************************************************** Function Name  : NVIC_Configuration* Description    : Configures Vector Table base location.* Input          : None* Output         : None* Return         : None*******************************************************************************/
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM    /* Set the Vector Table base location at 0x20000000 */   NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */  /* Set the Vector Table base location at 0x08000000 */   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif}
要进行宏定义VECT_TAB_RAM ,下面就是关键的一步了,就是在MDK中的设置了,如下

initialization file 必须加载,这个文件是如下编写:
FUNC void Setup (void) {  PC = 0X20000000;}LOAD .\Obj\GPIO.axf INCREMENTALSetup();g,main只要按照上面的步骤做就可随便想在哪里启动了。

UMHZ4W}8B(HU$7)YZ}$Q2Q1.jpg (77.96 KB )

UMHZ4W}8B(HU$7)YZ}$Q2Q1.jpg

@$3`4J350EJ7WGW(8]LUR2S.jpg (71.39 KB )

@$3`4J350EJ7WGW(8]LUR2S.jpg
沙发
飞鹰嵌入式|  楼主 | 2012-3-5 15:17 | 只看该作者
图片一是flash start
图片二是sram start

使用特权

评论回复
板凳
飞鹰嵌入式|  楼主 | 2012-3-6 13:41 | 只看该作者
如果还不行,可以按照我程序里的MDK设置一样设置

LED循环闪动.zip

1.23 MB

使用特权

评论回复
地板
tianhaolan| | 2015-2-11 14:49 | 只看该作者
不错,很全,就是这个BOOT位的设置是不是不大对?

使用特权

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

本版积分规则

46

主题

452

帖子

4

粉丝