STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。

stm32参数:

12V-36V供电

兼容5V的I/O管脚

优异的安全时钟模式

带唤醒功能的低功耗模式

内部RC振荡器

内嵌复位电路

工作温度范围:-40°C至+85°C或105°C

stm32特点:

内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。

存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。上电复位(POR)、掉电复位(PDR)和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。

低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。

tm32系统初始化流程:

调试模式:串行调试(SWD)和JTAG接口。

DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。

3个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6V。双采样和保持能力。片上集成一个温度传感器。

2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。

最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。

最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。SysTIck定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。

最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbit/s),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。

ECOPACK封装:STM32F103xx系列微控制器采用ECOPACK封装形式。

STM32启动流程分析:

无论是STM32、ARM系列的单片机,还是简单的如51,PIC等,都以为上述原因,需要启动程序,只不过51,PIC等单片机的启动程序已经在相应的IDE编译、链接的时候隐含的编译了,故在写单片机程序的时候无需考虑。而STM32的启动有相应的启动文件,本文将采用KEIL MDK自带的启动文件STM32F10x.s进行分析。

1 启动模式的选择

STM32芯片自带的启动方式有3种如下表

STM32的启动选择,通过设置BOOT1、BOOT0的引脚的高低电平即可选择。其中主闪存启动是将程序下载到内置的Flash进行启动(该flash可运行程序),该程序可以掉电保存,下次开机可自动启动;系统存储器启动是将程序写入到一快特定的区域,一般由厂家直接写入,不能被随意更改或擦除。内置SRAM启动,由于SRAM掉电丢失,不能保存程序,一般只用于程序的调试。

就程序的启动而言,采用以上3种方式启动,但对于一个嵌入式系统的程序来说,如果程序执行文件很大,而STM32内置的存储空间有限,就需要外置Nand flash/Nor flash 和SDRAM,即程序存储在flash中,程序执行在SDRAM中,既节约了成本有提高了运行效率。如果采用外置的Flash+SDRAM的方式,就需要一个更加复杂的启动文件(bootloader),需要考虑flash的COPY,Flash的驱动,内存的管理,通信机制等,本文暂不涉及此内容,以后有机会专门讲述。

2 启动文件STM32F10x.s分析

关于STM32F10x.s的启动文件,主要做了3个工作:分配和初始化堆、栈;定义复位向量并初始化;中断向量表及其相应的异常处理程序。

2.1 定义堆、栈及其初始化

堆和栈是能够运行C语言的前提,如以下程序:

定义栈:

Stack_Size EQU 0x00000200

AREA STACK, NOINIT, READWRITE, ALIGN=3

Stack_Mem SPACE Stack_Size

__iniTIal_sp

定义堆:

Heap_Size EQU 0x00000000

AREA HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base

Heap_Mem SPACE Heap_Size

__heap_limit

初始化堆、栈:

_user_iniTIal_stackheap

LDR R0, = Heap_Mem

LDR R1, =(Stack_Mem + Stack_Size)

LDR R2, = (Heap_Mem + Heap_Size)

LDR R3, = Stack_Mem

BX LR

2.2 定义复位向量

Boot引脚的设置不同,复位时,起始地址的位置不同,SRAM的起始地址为0x2000000, flash的起始地址为0x8000000。Cortex-M3内核规定,起始地址必须存放堆定指针,而第二个地址必须存放复位中断入口向量。在系统复位时,内核会自动从其实地址的下一个地址(即32位)空间取出复位中断入口向量,然后跳转到复位中断服务程序,该服务程序就会跳转到main()执行程序。

中断向量表(部分向量):

__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

复位中断服务程序

; Reset Handler // 该程序会跳转到main()

Reset_Handler PROC

EXPORT Reset_Handler [WEAK]

IMPORT __main

LDR R0, =__main

BX R0

ENDP

3 其他中断向量及服务子程序

在启动文件中,只定义了中断向量,其相应的服务子程序跳转到空操作。为以后扩展中断服务程序做了准备。

stm32正常运行流程图_stm32初始化流程图解析相关推荐

  1. Linux 系统启动流程图/系统初始化流程图

    来源 来源 来源 来源 来源 来源

  2. stm32正常运行流程图_STM32学习笔记(超详细整理144个问题)

    1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备: 2.Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为s ...

  3. stm32正常运行流程图_stm32学习笔记之问题总结

    1. SYSCLK时钟源有三个来源:HSI RC.HSE OSC.PLL; 2. MCO[2:0]可以提供4源不同的时钟同步信号; 3. GPIO口貌似有两个反向串联的二极管用作钳位二极管; 4. 总 ...

  4. stm32正常运行流程图_STM32单片机学习笔记(超详细整理143个问题,学习必看)...

    原标题:STM32单片机学习笔记(超详细整理143个问题,学习必看) 1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f ...

  5. stm32正常运行流程图_stm32学习基本知识点

    1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为st ...

  6. 流程图讲解_流程图小作文练习,详细讲解+精选范文!你们的魔鬼来了(一)...

    流程图比较少考,话说平时一个月必须考一次流程或是地图题.相对其他的类型小作文,很多人会觉得流程图和地图题比较难写,这两天给大家整理了一下这类题的写法. [干货篇]--你们的魔鬼,流程图来啦!下一篇是地 ...

  7. 流程图讲解_流程图+地图题小作文练习,详细讲解+精选范文!!

    流程图比较少考,话说平时一个月必须考一次流程或是地图题.相对其他的类型小作文,很多人会觉得流程图和地图题比较难写,这两天给大家整理了一下这类题的写法. [干货篇]--你们的魔鬼,地图题来啦! 流程图6 ...

  8. raptor流程图赋值语句_raptor流程图编程

    RAPTOR程序设计教程 55页 免费 Raptor使用顺序程序设计... 24页 2下载券 RAPTOR程序设计基础(B) 43页 3下载券 RAPTOR流程图编程 17页 免费 ...... RA ...

  9. STM32 IAP 在线升级原理全解析

    点击左上角的"关注",定期更新 STM32 最新资讯,总有你想要的信息! STM32 IAP 在线升级原理全解析 1. 什么是 IAP?    IAP(In-Application ...

最新文章

  1. Android library module生成aar文件
  2. 【OpenCV 】直方图均衡化,直方图计算,直方图对比
  3. 第一篇: 词向量之Word2vector原理浅析
  4. 电脑分辨率设置工具_干货分享:PPT 导出高清分辨率图片的四种方法
  5. python3.8新特性 逻辑表达式_Python3.8正式发布!新特性解析在这里
  6. ASPxPopupControl出现前一次弹框页面解决方法
  7. C++ decltype类型说明符(尾置返回类型使用)
  8. 【编译原理】第二章练习题
  9. 10岁吊打职业教师的天才,仅用10篇论文称霸数学界160多年,40岁英年早逝却迄今无人超越...
  10. Solaris下怎样改动文件创建时间及查询
  11. 初学Java(苏州实训之旅)
  12. python 自动登录方法_Python实现自动登录百度空间的方法
  13. .fit文件读取--head信息--修改head--读取csv文件-------ska暑期训练
  14. 信息系统项目管理师考试难?一次过备考经验分享给大家
  15. 网易wap新闻客户端
  16. UART、IIC以及SPI通信协议
  17. 传输层 可靠传输 连续ARQ协议和滑动窗口协议
  18. 桥本分数式-DFS法-Java
  19. 超好看的个人主页官网源码+带动态特效
  20. 人生不怕晚,就看敢不敢|优锘科技 X《无尽攀登》专场见面会

热门文章

  1. 无损音乐知识收集3(转)
  2. p 值的意义是什么?终于有人讲明白了
  3. 任务栏创建返回桌面快捷图标
  4. 【字节跳动实习面经(测试开发岗 一面)四个字:破涕为笑】
  5. 加州大学欧文分校 计算机专业,加州大学欧文分校计算机专业申请条件(附案例)...
  6. C语言 从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比
  7. 设计原则之合成复用原则
  8. Echarts实现中国地图线路图特效(一对多发射点)
  9. BZOJ 3470 Freda’s Walk (期望)
  10. Win11+Ubuntu20.04双系统安装教程