ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:315.92KB ,
资源ID:6284071      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6284071.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(stm32iapapp参数配置向量表映射.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

stm32iapapp参数配置向量表映射.docx

1、stm32iapapp参数配置向量表映射基于MDK的STM32系列IAP和APP程序的配置很多人在做IAP程序的时候,一般都能很容易就做出来,但是在做APP的时候,却经常会跑飞,其中原理,大都由于MDK配置出的问题,或者是APP没有映射向量表。向量表起始地址默认的是0x08000000,在IAP的程序里不用再映射,但APP的起始地址已经不再是0x08000000,所以,必须要映射到实际的起始地址,否则当IAP跳转到APP的时候,程序直接就飞了。如我的APP起始地址是0x08005400,我的映射函数是这么配置的NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x

2、5400); NVIC_VectTab_FLASH的值就是0x08000000。下面让我们来看看IAP和APP的MDK配置,其中片子为STM32F103RE,IAP起始是0x08000000,程序大小是0x5400字节;APP的起始地址是0x08005400,程序大小是0x7AC00,配置如下:1IAP的option for targetstm3210e-evel配置21)这里要注意的是IROM1的配置 2)这里是片子的选择配置单击setting进入下面的界面这里要注意Programming Algorithm的size大小。实际上经过测试,这个size使用片子的最大的容量也没关系,即0x00

3、080000(512K),也不会影响程序的运行。3)以上是大家需要配置的,以下是其它的配置,与IAP功能无关紧要,是我的配置,仅供大家参考。3APP的配置1)注意下面的IROM1的配置,千万不可与IAP有区域重叠,而且size不能超过片子的大小。这里0x7AC00与IAP的0x5400之和,刚好是0x80000,即512K2)片子的配置再次说明一下,以上的RAM for algorithm(RAM为运算法则准备的空间)的size和programming for algorithm(程序为运算准备的空间)的size都是默认的,当然程序为运算准备的空间大小也可以改成0x7AC00,起始地址改为0x

4、08005400,但经过调试效果都一样。其它MDK的设置参照IAP的(3)点(3)以下的说明要特别注意,稍不留神就会出问题。平时我们在建立工程的时候,可能不会去重新映射向量表,原因是一般我们程序的起始地址都是默认的0x08000000,但此刻的APP的起始地址是0x08005400,那么就必须重新映射了。需要注意的是,在系统时钟配置好后,马上就做向量映射,中间最好先不要做其它的配置,比如端口初始化等等,否则程序跑飞也不一定的。下面的这段代码就是我实际的配置过程。Void Main(void)SystemInit();/系统初始化NVIC_SetVectorTable(NVIC_VectTab_

5、FLASH, 0x5400); /向量表映射void SystemInit (void) /*!CR |= (uint32_t)0x00000100; /*!CFGR &= (uint32_t)0x88FFC00C; /*!CR &= (uint32_t)0xEEFEFFFE; /*!CR &= (uint32_t)0xFFFBFFFF; /*!CFGR &= (uint32_t)0xFF02FFFF; /*!CIR = 0x00000000; /* Configure the System clock frequency, AHB/APBx prescalers and Flash sett

6、ings */ SetSysClock(); / SetSysClock65K();#ifdef VECT_TAB_SRAM SCB-VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */#else SCB-VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */#endifstatic void SetSysClock(void) _IO uint32_t StartU

7、pCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -*/ /* Enable HSE */ RCC-CR |= (uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ do HSEStatus = RCC-CR & RCC_CR_HSERDY; StartUpCounter+; while(HSEStatus = 0) & (StartUpCounter != HSE_START

8、UP_TIMEOUT); if (RCC-CR & RCC_CR_HSERDY) != RESET) HSEStatus = (uint32_t)0x01; else HSEStatus = (uint32_t)0x00; if (HSEStatus = (uint32_t)0x01) /* Enable 64-bit access */ FLASH-ACR |= FLASH_ACR_ACC64; /* Enable Prefetch Buffer */ FLASH-ACR |= FLASH_ACR_PRFTEN; /* Flash 1 wait state */ FLASH-ACR |= F

9、LASH_ACR_LATENCY; /* Power enable */ RCC-APB1ENR |= RCC_APB1ENR_PWREN; /* Select the Voltage Range 1 (1.8 V) */ PWR-CR = PWR_CR_VOS_0; /* Wait Until the Voltage Regulator is ready */ while(PWR-CSR & PWR_CSR_VOSF) != RESET) /* HCLK = SYSCLK /1*/ RCC-CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK2 = HC

10、LK /1*/ RCC-CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;XX文库 - 让每个人平等地提升自我 /* PCLK1 = HCLK /1*/ RCC-CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; /* PLL configuration */ RCC-CFGR &= (uint32_t)(uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | RCC_CFGR_PLLDIV); RCC-CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PL

11、LMUL12 | RCC_CFGR_PLLDIV3); /* Enable PLL */ RCC-CR |= RCC_CR_PLLON; /* Wait till PLL is ready */ while(RCC-CR & RCC_CR_PLLRDY) = 0) /* Select PLL as system clock source */ RCC-CFGR &= (uint32_t)(uint32_t)(RCC_CFGR_SW); RCC-CFGR |= (uint32_t)RCC_CFGR_SW_PLL; /* Wait till PLL is used as system clock source */ while (RCC-CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL) else /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ OYZQ 2013-12-30

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1