|
STM32F MPU使用方法和源程序,分為特權模式和用戶模式,可對任意地址進行訪問限制。對于安全性比較高的應用或系統尤為重要。
/*
*********************************************************************************************************
*
* 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運行,不能獨立運行。
|
-
-
μCOS-III教程1-11期.pdf
2018-7-13 16:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
5.76 MB, 下載次數: 15, 下載積分: 黑幣 -5
-
-
第6期:MPU的API函數.rar
2018-7-13 16:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.92 MB, 下載次數: 25, 下載積分: 黑幣 -5
-
-
第6期:MPU簡易使用例子二.rar
2018-7-13 16:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
5.02 MB, 下載次數: 41, 下載積分: 黑幣 -5
評分
-
查看全部評分
|