keil的sct文件使用

修改sct文件

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00080000{    ; load region size_region
ER_IROM1 0x08000000 0x00080000{  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
}


RW_IRAM1 0x20000000 0x00005000 {  ; 内部SRAM
.ANY (+RW +ZI)      ;其余的RW/ZI-data都分配到这里
}

RW_ERAM1 0x20005000 0x00007000{  ; 指定的存储空间
*.o(HEAP)            ;选择堆区
   .ANY (EXRAM)       ;选择EXRAM节区
}
}

使用

//使用 __attribute__ 关键字定义指定变量定义到某节区
//语法: 变量定义 __attribute__ ((section ("节区名"))) = 变量值;
uint32_t testValue  __attribute__ ((section ("EXRAM"))) =7 ;

//使用宏封装
//设置变量定义到“EXRAM”节区的宏
#define __EXRAM  __attribute__ ((section ("EXRAM")))

//使用该宏定义变量到“指定的存储空间”
uint32_t testValue __EXRAM =7 ;

如果使用了外部的存储器需要修改stm32的启动文件

; Reset handler
Reset_Handler    PROC
               EXPORT  Reset_Handler             [WEAK]
         IMPORT  SystemInit
         IMPORT  __main

      ;从外部文件引入声明,格式:IMPORT 要调用的初始化函数名
;以下语句仅作演示,使用外部存储器时请去掉注释用的“;”号,本工程使用内部SRAM,无需初始化
               ;IMPORT FSMC_SRAM_Init
               LDR     R0, =SystemInit
               BLX     R0

   ;在__main之前调用FSMC_SRAM_Init进行初始化
;以下语句仅作演示,使用外部存储器时请去掉注释用的“;”号,本工程使用内部SRAM,无需初始化
            ;LDR   R0, =FSMC_SRAM_Init
            ;BLX   R0

               LDR     R0, =__main
               BX      R0
               ENDP

摘自:https://doc.embedfire.com/mcu/stm32/f103/hal_generalzh/latest/doc/chapter40/chapter40.html#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值