STM32 开发板资源梳理

片内资源

开发板使用的STM32F407ZGT6在手册里是这样的:

片内FLASH:1M,片内RAM:192K,这两个跟程序运行和下载密切相关。

FLASH

地址分配如图,因此FLASH下载地址从0x8000 0000开始,大小为0x0010 0000(1M)

RAM

RAM的两段需要注意的是只有0x20000000开始的112K+16K是可以让外设访问的,而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\r\n", ov_frame); //打印帧率
                                          //printf("jpeg_data_len:%d\r\n",jpeg_data_len);//打印帧率
        ov_frame = 0;
    }
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除中断标志位
}

其他

参考手册使用

板载资源

  • W25Q128 8Mbit的SPIflash
  • AT24C02 2048bit,256B的E2PROM,IIC接口
  • 液晶屏,网口DP83848,RS485/232,CAN,SRAM,USBOTG等等

原文地址:https://www.cnblogs.com/RegressionWorldLine/p/11674112.html

时间: 2024-10-10 10:05:41

STM32 开发板资源梳理的相关文章

转载:百为STM32开发板教程之十一——NOR FLASH

转载:http://bbs.21ic.com/icview-586199-1-1.html 百为STM32开发板教程之十一——NOR FLASH 参考文档:百为stm32开发板光盘\st官方参考资料\Application notes\AN2784 Using the high-density STM32F10xxx FSMC peripheral to drive external memories.pdf百为stm32开发板光盘\芯片数据手册\M29W128G.pdf百为stm32开发板光盘

stm32开发板无法正常写入的问题或者写入后无法正常运行的问题

在调试stm32的程序的时候遇到这样一个问题. 用Keil往stm32里写入程序时出现无法访问内存的错误.情况如下 然后 J-link没有提示异常.偶尔可以下载成功,但是程序无法正确的执行. 经过一番摸索发现,由于开发板线路的连接在5v,arm开发板可能无法正确的工作.只需将电源切换到3.3v即可顺利的下载进程序.

TPYBoard V102:能跑Python的stm32开发板

近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBoardV102开发板. 一.板载硬件资源介绍 按照惯例先来介绍一个这块开发板的硬件组成,个人感觉这个开发板的性能还是属于相当不错的,下面详细介绍一下. TPYBoardV102是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于

迅为I.MX6ULL终结者开发板资源介绍

限时优惠298元包邮送到家,我们能买到一个什么样子的Linux板卡呢?今天我就给大家一一揭秘. 迅为I.MX6ULL终结者开发板板载资源非常丰富,几乎已经把i.MX6ULL的功能发挥到了极致.下面我们就来具体分析下i.MX6ULL终结者的硬件资源.我们从电源接口开始按照顺时针的方向依次介绍. 首先我们来看下底板的资源说明,以4G版为例: 1. 电源DC输入接口 底板板载的一个电源输入接口(JACK1),采用了宽电压输入的电源芯片(JW5060T),外部可以输入5V~16V范围内的直流电源,通过电

米尔XC7Z010开发板资源

关于XC7Z010开发板 详细介绍http://www.myir-tech.com/product/myc_C7Z010_20.htm Xilinx基于28nm工艺流程的Zynq-7000 All Programmable SoC平台是ARM处理器和FPGA结合的单芯片解决方案,十分适合既需要FPGA又需要处理器的应用场合,经过这么多年的发展,市场上的应用已经非常多了,是一个十分热门的嵌入式开发平台,米尔XC7Z010开发板(http://www.myir-tech.com/product/my

学完STM32开发板,就选4412开发板让你有目标的学习嵌入式开发

600余页用户使用手册 linux实验手册(资料不断更新)100期配套零基础高清视频教程 轻松入门 (资料不断更新)2000人售后认证群 在线支持 售后无忧 源码全开源  原厂技术资料经典学习书籍推荐 部分视频目录分享: iTOP-4412精英版搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超大容量,纵使海量思考也能及时处理.独家配备三星S5M8767电源管理,最优架构! 配备Android.Linux + Qt.Ubuntu操作系统,开启学习.研发的

STM32开发板的TIM3开启和关闭

关闭定时器中断要考虑好多情况 1)关闭定时器时,定时器是否在处在工作状态 2)关闭定时器时,定时器是否正好进入中断,造成关闭程序出现断层,进而无法实现完整关闭程序,此时可以使用高一级别的外部中断强制进入外部中断服务函数进行关闭程序 3)关闭定时器时,关闭定时器的程序是否在定时器服务函数里面?还是在总函数里面?还是在外部中断服务函数里面?是需要考量的? 4)关闭定时器时,定时器的中断触发时间是否太紧凑?定时器的中断总次数是否太小?都会影响关闭定时器程序运行的连续性. 以下为关闭程序: 首先打开时钟

用Altium Designer16 绘制STM32开发板PCB 笔记

第一部分 Altium designer 软件概括 一.安装:要安装英文版,只安装pcb design和importers/exporters 二.设置:dxp-preferences我们关心的是system schematic pcbeditor三项 (1)system: (2)schematic:原理图工程师需要详细设置,这里介绍. (3)pcbeditor: 三.设置快捷方式 (1)右键顶栏-选择customize (2)ctrl+左键点图标

15.4.26 &nbsp; 野火stm32开发板损坏修复记录

这次在板子问题的处理上犯下了好几处错误.1.虽然VCC和GND短了以后,第一反应是回想当初是什么操作造成了这个事故,以此来确定问题出在哪里.2.虽然问题定位为芯片被静电击穿,但拆换芯片的时候没有去确认错误,(这就造成了后续的一系列问题)3.更换片子以后,发现vCC和GND还是短接,就开始见擦汗是否为元器件烧坏或者滤波电容击穿出现的问题.在这里除了第二部有点瑕疵之外,其它的排查步奏都是无可厚非的,但关键就在于,在出现问题时所用到的器件,和所有的滤波电容都拆除以后,短接情况还是没有解决.4.唯一剩下