STM32小常识

来源:互联网 发布:mac怎么退出vim 编辑:程序博客网 时间:2024/05/18 06:28

1、stm32的Device下载网址

https://www.keil.com/dd2/

进去之后找对应的 Device Family Pack,如:https://www.keil.com/dd2/stmicroelectronics/stm32f401ccux/

2、stm32官网标准库、例程下载网址

http://www.stmicroelectronics.com.cn/en/embedded-software/stm32-standard-peripheral-libraries.html?querycriteria=productId=LN1939

3、SYSCFG时钟

有关内存空间重映射、与EXIT配置操作,打开:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE)

4、IRAM1、IRAM2

若使用如下:        #define  SRAM  0X20000000        uint32_t a  __attribute__((at(SRAM)))=0;        uint32_t b  __attribute__((at(SRAM+4)))=0;配置区需为:
![这里写图片描述](http://img.blog.csdn.net/20170927003959696?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbml1Xzg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) IRAM2必须分配出内存,对勾打不打无所谓,IRAM1的对勾必须要打否则编译报错。编译完之后,在生成的 ***.sct** 分散加载文件为:*.sct
; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *************************************************************LR_IROM1 0x08000000 0x00010000  {    ; load region size_region  ER_IROM1 0x08000000 0x00010000  {  ; load address = execution address   *.o (RESET, +First)   *(InRoot$$Sections)   .ANY (+RO)  }  RW_IRAM1 0x20000008 0x00010000  {  ; RW data   .ANY (+RW +ZI)  }}

而如果IRAM2打钩,则

; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *************************************************************LR_IROM1 0x08000000 0x00010000  {    ; load region size_region  ER_IROM1 0x08000000 0x00010000  {  ; load address = execution address   *.o (RESET, +First)   *(InRoot$$Sections)   .ANY (+RO)  }  RW_IRAM1 0x20000008 0x00010000  {  ; RW data   .ANY (+RW +ZI)  }  RW_IRAM2 0x20000000 0x00000008  {   .ANY (+RW +ZI)  }}
此IRAM地址可在上面设置,也可以自己加载分散文件 *.sct ,如:

这里写图片描述

Use Memory Layout From Target Dialog前的对勾去掉,在Scatter File中加载自己写的分散文件。

  注:
     IRAM1与IRAM2的地址分配可互换

原创粉丝点击