123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /*
- *********************************************************************************************************
- *
- * 【安富莱】STM32-V5 开发板-开发环境说明
- *
- * 最后更新日期:2013-06-20
- *
- * 推荐将编辑器的缩进参数和TAB设置为4 来阅读本文件
- *
- *********************************************************************************************************
- */
- 【1】CPU内部资源
- CPU型号 : STM32F407IGT6 / LQFP-176 / ARM 32-bit Cortex-M4 (带FPU 硬件浮点单元)
- 主频 : 168 MHz, 210 DMIPS/1.25 DMIPS/MHz
- 内部Flash容量 : 1MB
- 内部SRAM容量 : 192K + 4K SRAM
- GPIO 数量 : 140个具备外部中断能力,136个快速IO(60M), 138个5V兼容(意思是GPIO可输入5V电压)
- 定时器 : 17个 - 其中12个16-bit和2个32-bit定时器可以到150 MHz
- UART : 6个 4个USART1,2个UART【10.5 Mbit/s】
- SPI : 3个 【37.5 Mbits/s】
- I2C : 3个
- ADC : 3个独立的12位ADC,最多24路复用输入
- DAC : 2路独立12位DAC
- CAN : 2个 CAN 2.0B
- SDIO : 1个
- CAMERA : 8 - 14bit 并行摄像头接口,最大速度 67.2M 字节/秒
- Ethernet : 10/100 Ethernet MAC, 需要外部PHY芯片。
- USB : USB2.0全速(主、从)无需外部PHY。USB2.0高速模式需要外部PHY芯片。
- 【2】FSMC存储器地址分配
- CPU内部 FLASH 【0x0800 0000 - 0x080F FFFF】,容量1M(0x100000)字节
- CPU内部 SRAM1 【0x2000 0000 - 0x2001 FFFF】,容量128K(0x20000)字节
- CPU内部 SRAM2 【0x1000 0000 - 0x1000 FFFF】,容量64K(0x10000)字节
- 外部 NOR Flash 【0x6400 0000 - 0x64FF FFFF】,容量16M(0x1000000)字节
- 外部 SRAM 【0x6800 0000 - 0x681F FFFF】,容量2M(0x200000)字节
- DM9000A芯片地址【0x6840 0000, 0x6848 0000】, 仅占用2个端口地址
- TFT LCD地址 【0x6C00 0000, 0x6C08 0000】, 仅占用2个端口地址
- 外扩AD7606地址 【0x6C40 0000】, 仅占用1个端口地址,只读
- OLED地址 【0x6C20 0000, 0x6C28 0000】, 仅占用2个端口地址
- 外部 NAND Flash【0x7000 0000】, 容量128M(0xC800000)字节
- 【3】I2C总线外设地址分配
- 序号 器件 地址
- 1 串行EEPROM AT24C128 0xA0
- 2 音频CODEC芯片WM8978 0x34
- 3 AM/FM收音机Si4730 0x22
- 4 摄像头OV7670 0x42
- 5 磁力计HMC5883L 0x3C
- 6 陀螺仪 MPU-6050 0xD0
- 7 光照 BH1750FVI 0x46
- 8 大气压 BMP085 0xEE
- 【4】开发工具
- 【仿真器】
- 虽然STM32F4XX支持串口和USB口ISP下载程序,但是不支持在线调试,因此强烈推荐购买一个仿真器,提高程序开发效率。
- - ST-LINK V2 仿真器: ST公司开发的仿真器,可以下载程序和调试跟踪程序。支持STM8和STM32。
- - J-LINK V8 仿真器 : Segger公司开发的仿真器,可以下载程序和调试跟踪程序。支持所有ARM系列,包括STM8。
- 【USB转串口线】
- - 现在大多数PC机都没有硬件串口了。但是对于单片机串口还是很有用的。安富莱的很多例程都需要通过串口打印调试信息。
- 【开发软件】
- - 编译环境 IAR EWARMv6 和 KEIL 的 MDK uV4。请按需选择,如都不熟悉,推荐使用KEIL MDK (uV4)。
- - SecureCRT : 一个优秀的功能强大的超级终端工具,主要用来显示开发板从串口打印出来的信息
- - UltraEdit : 一个优秀的源代码编辑工具
- - SourceInsight : 一个优秀的源代码浏览工具
- 【5】编译和调试方法
- 说明:安富莱的例程均提供 KEIL 和 IAR两种工程,每个工程中设置了2个Target,一个是在Flash巡行的,一个是在CpuRAM运行的。请按需要选择。
- 如果需要不修改Flash中的程序调试新的例程,可以选择在CPU RAM运行。
- 【Keil MDK】V4.54
- - 执行菜单 Project -> Open project 打开 \Project\MDK-ARM(uV4)\project.uvproj (这是工程文件)
- - 执行菜单 Project -> Rebuild all target files 重新编译所有的文件:
- - 执行菜单 Debug->Start/Stop Debug Session (Ctrl+F5) 启动调试:
- 【备注1】选择在CPU RAM运行时,不能使用Load按钮下载程序,请直接Start Debug即可。因为Load按钮是专门用于下载到Flash的。
- 【备注2】对于Keil MDK,为了避免中文字符串告警,需要在C/C++编译选项中增加 --diag_suppress=870 参数。
- 【IAR EWARM】V6.30
- - 执行菜单 File -> Open Workspace (打开工程文件: Project\EWARMv6\Project.www)
- - 执行菜单 Project -> Rebuild All (重新编译整个工程)
- - 执行菜单 Project -> Download and Debug(Ctrl+D) (装载程序并启动调试)
- 【6】例程文件夹说明
- ├─Libraries : 存放第3方提供的库或其源代码,这些代码一般是成熟的并经过验证的代码。
- │ ├─CMSIS : CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。
- │ ├─STM32F4xx_StdPeriph_Driver : STM32F4XX系列MCU的标准固件库源代码
- │ ├─STM32_USB_Device_Library : STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library
- │ └─STM32_USB_OTG_Driver : STM32F105/7xx, STM32F2xx and STM32F4xx USB OTG Driver
- │
- ├─User : 这里存放用户自己编写的源代码
- │ ├─bsp_stm32f4xx : 板级支持包(Board Surport Packet),也就是硬件底层驱动程序. 该层介于固件库和应用程序之间。
- │ └─fonts : 存放点阵字库常量数组
- │
- └─project : 这里存放各类开发工具的工程文件,编译过程中的临时文件和最终HEX文件都放在此文件夹
- ├─MDK-ARM(uV4) : KEIL公司MDK uVision 4工程文件夹
- └─EWARMv6 : IAR公司的EWARM 工程文件夹
- 【7】工程中源代码分组说明
- └─Flash : Target名称,Flash 或 CpuRAM
- ├─USER : 存放 main.c 以及用户用用程序
- ├─BSP : 板级支持包(Board Support Packet),存放硬件底层驱动文件
- ├─CMSIS : 仅存放CMSISI接口文件 system_stm32f4xx.c
- ├─StdPeriph_Drivers: 存放STM328S系列MCU的固件库源代码
- ├─MDK-ARM : 启动文件(汇编源程序),对于IAR是 EWARMv6
- └─Doc : 存放一些文档,仅限txt文件
- 【8】公共源代码文件说明
- - main.c : 用户主程序,存放main()函数的文件
- - stm32f4xx_it.c : 集中存放中断服务程序 【除了几个异常中断外,我们建议其他的ISR放到各自的模块中】
- - stm32f10x_assert.c : 存放断言函数 (一般无需更改)
- - bsp.c : 底层硬件驱动程序的主程序(包含硬件初始化入口函数)
- 【9】C编译器中的预定义宏 (在工程设置中更改)
- USE_STDPERIPH_DRIVER - 增加这个符号表示使用ST公司的标准外设库
- VECT_TAB_SRAM - 增加这个符号表示中断向量表定位在CPU内部RAM (针对在CPU内部RAM运行的工程才需要添加)
- 【10】BSP源码中的硬件型号宏 (直接修改 bsp.h 文件进行更改)
- 在 bsp_stm32f4xx 文件夹下,很多文件用到了开发板型号的宏:
- STM32_X4 - 表示安富莱STM32-X4核心板(功能简单的核心板,便于外接设备)
- STM32_V5 - 表示安富莱STM32-V5开发板(功能强大的开发板)
- 因为两种硬件的GPIO定义不同,为了共用一套BSP源码,因此添加这2个宏进行区别。
- 用户可以在 bsp.h 文件中define这2个宏来选择硬件类别。
-
- 【11】调整堆和栈的容量
- 对于KEIL MDK, 设置堆和栈的大小是通过修改启动文件start_stm32f4xx.s 文件实现的,比如:
- Stack_Size EQU 0x00004000
- Heap_Size EQU 0x00000400
- 对于IAR EWARM, 直接在工程设置中进行修改即可
- - 菜单 project -> options -> 选择Linker -> Config页 -> 点Edit按钮 -> 切换到CSTACK/HEAP
- 比如:
- CSTACK = 0x800
- HEAP = 0x400
-
- 【12】输出目标文件
- 在 project 下面,有编译好的 hex 文件,用户可以用仿真器直接下载 output(flash).hex 到CPU内部flash
- output(flash).hex - 采用KEIL MDK编译好的文件,定位在CPU 内部Flash
- output(ram).hex - 采用KEIL MDK编译好的文件,定位在CPU 内部RAM(该文件需要引导程序装载到
- CPU内部RAM运行,不能独立运行。
|