STM32 开发板资源梳理
目錄片內資源FLASHRAM時鐘與總線中斷其他板載資源
片內資源
開發板使用的STM32F407ZGT6在手冊里是這樣的:
片內FLASH:1M,片內RAM:192K,這兩個跟程序運行和下載密切相關。
FLASH
地址分配如圖,因此FLASH下載地址從0x8000 0000開始,大小為0x0010 0000(1M)
RAM
RAM的兩段需要注意的是只有0x20000000開始的112K+16K+64K是可以讓外設訪問的,而0x10000000開始的64K不可被外設訪問
時鐘與總線
系統時鐘SYS_CLK有3個來源,HSI(內部16M,可用作PLL),HSE(外部高速,晶振產生),PLL(主PLL由HSE或HSI提供,輸出兩路,第一個輸出高速系統時鐘168M,第二路生成USBOTG 48M、RNG<=48M、SDIO時鐘<=48M,專用PLL用于I2S),配置方面可以參考cubeMX來設置
總線的概念一直不太清楚,這里總線部分引用自網絡:
總線來自于ARM公司的AMBA標準,是ARM公司提出的一種開放性的SoC總線標準,現在已經廣泛的應用于RISC的內核上,它定義了兩種總線: AHB(Advanced High-performance Bus)先進的高性能總線,也叫做ASB(Advanced System Bus)。APB(Advanced peripheral Bus)先進的外設總線,AHB和ASB其實是一個東西,是高速總線,主要負責嵌入式處理器、DMA控制器、Memory等等的接口。 APB是低速總線,主要負責外設接口
簡單說就是高低速分離,通過bridge連接,片上外設配置的寄存器涉及的總線在手冊中有寫:
中斷
中斷類型和資源手冊有寫,這里標記下如何在程序中使用中斷,首先在工程中一般是CORE目錄下會有startup_stm32f40_41xxx.s這個匯編文件,摘取其中一部分說明:
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00000800 ;如果使用STemWin的話此值應該設置大一點
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window WatchDog
DCD PVD_IRQHandler ; PVD through EXTI Line detection
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
DCD FLASH_IRQHandler ; FLASH
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line0
DCD EXTI1_IRQHandler ; EXTI Line1
DCD EXTI2_IRQHandler ; EXTI Line2
DCD EXTI3_IRQHandler ; EXTI Line3
DCD EXTI4_IRQHandler ; EXTI Line4
這里定義了棧Stack_Size和堆Heap_Size的大小,棧內存放局部變量和程序嵌套過程中的壓棧數據,堆可用于動態內存分配和釋放,注意全局變量在BSS段不占用棧和堆,__Vectors給出了中斷向量表和服務函數的名稱,在C文件中定義相應的服務函數即可:
//定時器3中斷服務函數
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET) //溢出中斷
{
//OS_TimeMS++;
printf("frame:%d
", ov_frame); //打印幀率
//printf("jpeg_data_len:%d
",jpeg_data_len);//打印幀率
ov_frame = 0;
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除中斷標志位
}
其他
參考手冊使用
板載資源
W25Q128 128Mbit的SPIflash,實際16MB可用
AT24C02 2048bit,256B的E2PROM,IIC接口
液晶屏,網口DP83848,RS485/232,CAN,SRAM,USBOTG等等
總結
以上是生活随笔為你收集整理的STM32 开发板资源梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 男子结扎后遗症怎么办
- 下一篇: LayaAir引擎开发HTML5最简单教