首页 STM32学习笔记

STM32学习笔记

举报
开通vip

STM32学习笔记读书参考手册 1  STM32不完全手册 2  基于MDK的STM32处理器开发应用 3  STM32中文参考手册 4  Cortex-M3权威指南 5  STM32固件库使用手册 6  STM32_在KEIL_MDK环境下使用V3.4库 经过这段时间,基本知道了内容。例如系统初始化配置,看门狗,定时器,AD,SPI等等内容。这段时间,需要结合example例子,熟悉编程风格以及加深内容理解。 这次看书最重要,属于收获的阶段。大概看一个星期吧,仔细研究。然后就是开发板回来,通过动手,实践出真知。 2011-11-...

STM32学习笔记
读书参考手册 1  STM32不完全手册 2  基于MDK的STM32处理器开发应用 3  STM32中文参考手册 4  Cortex-M3权威指南 5  STM32固件库使用手册 6  STM32_在KEIL_MDK环境下使用V3.4库 经过这段时间,基本知道了内容。例如系统初始化配置,看门狗,定时器,AD,SPI等等内容。这段时间,需要结合example例子,熟悉编程风格以及加深内容理解。 这次看书最重要,属于收获的阶段。大概看一个星期吧,仔细研究。然后就是开发板回来,通过动手,实践出真知。 2011-11-17 《基于MDK的STM32处理器开发应用》笔记 第一章:Cortex-M3处理器简介 2006年就推出了ARMv7(不是ARM7)内核,和DSP一样,有多个系列。A/R/M三个系列,很巧合,和ARM(advanced risc machines,英国公司,不生产芯片,提供MATCH_ word word文档格式规范word作业纸小票打印word模板word简历模板免费word简历 _1713853611301_2芯片 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 挣钱并提供软件开发工具、编译器)同名。 A:application,高端应用型号; R:RealTime,实时系统; M:MCU,低端微控制器。  产业链构成 内核设计 <-> 芯片设计<-> 芯片制造 <-> 产品设计<-> 产品制造 ARM公司    | ST意法半导体公司|      |自动化公司 标号含义 STM32 F 103 R C T 6 xxx Device family STM32 = ARM-based 32-bit microcontroller Product type F = general-purpose Device subfamily 103 = performance line 101 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 型 103增强型 Pin count R = 64 pins V = 100 pins Z = 144 pins Flash memory size C = 256 Kbytes of Flash memory D = 384 Kbytes of Flash memory E = 512 Kbytes of Flash memory Package H = BGA T = LQFP(薄四方扁平封装) Y = WLCSP64 Temperature range 6 = Industrial temperature range, –40 to 85 °C. 7 = Industrial temperature range, –40 to 105 °C.       第二章:Cortex-M3编程模型 1. 模式、状态 1.1. 两种模式 处理模式:handle,异常时进入,特权状态; 线程模式:thread,正常处理模式,可以运行于特权和用户(非特权)状态; 1.2 两种状态 特权状态:可以访问所有资源; 非特权状态:某些资源是不能访问的。 两种模式/状态可以构成一个2*2矩阵。处理器启动后进入线程模式特权状态,可以手工切换到用户状态,可是无法切换回特权状态了!除非异常,进入处理模式,然后回到特权状态。 2. 堆栈介绍 包括主堆栈、进程栈。系统启动后,使用主堆栈。进入线程模式后,可以使用进程栈。异常使用主堆栈。 3. 寄存器,20个32位 R0~R12, 13个通用寄存器; 分组寄存器Banked,R13, 用于指示堆栈顶部,堆栈是向下生长的; 连接寄存器R14(LR),用于存储返回地址; 程序寄存器PC,指示下一条指令地址; XPSR,程序状态寄存器,A应用/I中断/E执行。 中断发生三步走: 1. 现场自动保护。当异常发生时候,R0~R3,R12,LR,PC(如果当前是PSP就如PSP,否则如MSP,进入异常后,将使用MSP),xPSR入栈。 为什么仅仅保存了R0~R3,R12这几个通用寄存器,其它的通用寄存器就是下等公民?原因在于编译器优化ISR,一般会使用这几个寄存器,其它不用,所以不保存。如果用到了R4,编译器也会生产相应代码保存R4。 2. 取中断向量。保护现场堆栈操作时,ICODE总线会根据中断向量表(DCODE完成查表操作),预取指。这儿可以体会到了专用总线的优点,多个事情可以同时进行。 3. 更新寄存器。入栈会更新PSP/MSP到最新的位置,然后让SP=MSP。PSR存储当前的异常编号。PC指向入口地址。LR被更新位EXC_RETURN(仅有三个合法的值,异常的时候,栈保存的PC值为返回地址,LR作为PC返回地址仅用于子函数调用,异常LR指示返回状态)。 4. 123完成后,开始执行服务例程。 中断返回。如果将EXC_RETURN写入到PC,就会开始中断返回操作。首先恢复现场,然后把NVIC的中断活动位置0。 疑问:既然有LR寄存器,为何需要保存PC值? R14/LR存储子程序的返回地址。当程序调用时候,PC值为当前指令地址+4(应该在子程序里面吧),并不是返回地址,所以必须由LR保留返回地址!! 当异常发生时候,LR却不变化,此时PC存的返回地址是返回地址!! 所以,LR,PC这两个地址不是等价的,分别在子函数和异常中保留返回地址。 中断尾链异常:当中断运行过程中,碰到一个低优先级的ISR过来,该功能可以有用,加快了中断响应速度。 中断迟到异常:中断响应过程中,如果碰到高优先级的ISR过来,会现场保护完毕后,执行高优先级的ISR,然后运行完毕后,会尾链异常,切换到低优先级的ISR运行。如果,迟到太狠,就是中断嵌套了,且没有中断尾链异常! 4. 指令集 Cortex-M3支持16位的thumb指令和32位的thumb2指令。不支持ARM指令。 5. 系统控制寄存器 在内存空间固定分配,实现系统控制功能。 第三章 STM32处理器总线结构和存储器 1 总线结构 Cortex-M3内核的Icode总线,Dcode总线,System总线,私有外设总线。 Icode总线:负责Flash取指(0x00000000~0x1FFFFFFF); Dcode总线:负责Flash取数,查表(0x00000000~0x1FFFFFFF); -----------------------------均小于SRAM地址,或者讲为block0区,大小512MB。 System总线:负责访问外设和片上资源,包括SRAM,片上外设,外扩RAM,外扩外设,系统存储区的供应商定义部分; 私有外设总线:主要是访问调试专用的资源,位于系统存储区。 AHB:先进高性能总线,72MHZ。 APB:先进外设总线,APB2高速,72MHZ,APB1低速,36MHZ。 APB1:USB,UART2~3,CAN,I2C,BKP,WDG,TIM2~4,SPI2; APB2:TIM1,UART1,SPI1,GPIOx,ADCx,EXIT; 2 存储器组织与映射 Cortex-M3采用统一编址方式,存储空间为4GB,小开端存放(引脚可配大开端)。分成8大块,每块都是512MB。这样,可以采用内存访问的方式去统一访问所有资源。 和PC一样,存储区最小单位为字节,但是总线和寄存器为32位,所以,一次就是取了4个字节。这就是为什么一个中断向量一下存4个字节,pc也是+4的原因。      片内Flash,起始地址为0x08000000;片内RAM为0x20000000(512MB)。 对于RAM和外设都有位带区和位带别名区,主要就是考虑方便位操作。 位带别名地址 = 位带别名起始地址 + 位带区字节偏移地址*32 + 位偏移地址*4 两个位带区和对应的位带别名区,位带区大小为1MB,别名区大小为32MB。 位带区1:0x20000000~0x20100000 别名区1:0x22000000~0x23FFFFFF  -------RAM使用 位带区2:0x40000000~0x40100000 别名区2:0x42000000~0x43FFFFFF  -------外设使用 将一位映射到一个字,所以从1MB扩带到了32MB。 外设区映射片上外设的寄存器,这样通过内存变量操作实现了外设控制。 系统启动有三处:Flash: 0x08000000 ~ 0x0807FFFF, 大小为0x80000, 512KB。 System memory: 0x1FFFF000~0x1FFFF7FF,大小为0x8000, 32KB。 (运行bootloader,用于系统程序更新,串口下载) SRAM:0x20000000~0x2000FFFF,大小为0x10000,64KB。 通过对BOOT[0,1]引脚配置,实现Flash存储区/系统存储区/内嵌SRAM区启动选择,硬件会自动将选择的启动区映射到“系统启动区”。这样,都是从0x00000000的系统启动区开始运行,其实CODE的真实地址不是0x00000000。 注意:系统启动区0x0000000 ~ 0x0007FFFF,大小为三个区域的最大的512KB。该区域其实为上述三个区域的别名区。 STM32F103VC,Flash大小为256KB,SRAM位48KB。 3 系统启动配置 通过配置BOOT[0..1]引脚,实现启动区的映射,但是用以前的物理区地址也可以访问。也就是说某个空间可能有两个地址,和位段类似。 第四章 Cortex-M3的异常处理 1 异常响应 Cortex-M3异常响应来讲,是非常迅速的。其中涉及了一些非常重要的技术。 1 现场自动保护与恢复。异常时,会自动保存某些寄存器,退出时,会自动恢复。 2 中断向量的获取(ICODE取址/DCODE查表)和现场保护(System RAM堆栈操作)同步。 3 中断嵌套和优先级分组。 4 中断尾链技术(减少了不必要的堆栈保护),中断迟到技术(让优先级高的后到先做)。 中断尾链:当一个ISR运行时候,另外一个低优先级的ISR到来,后来的会阻塞。当ISR执行完毕后,不用恢复现场,而是让阻塞的ISR运行。减少了中断的开销。 中断迟到:特指ISR现场保护这段很短的时间,如果有个更高的优先级的中断到来,现场保护完毕后,是立马执行晚到的ISR。否则ISR运行过程中来,就是中断嵌套了。 中断响应时候,如果用的PSP,现场就保存于PSP,否则保存与MSP。不过进入ISR后,就会使用MSP。堆栈是“向下生长”的。每次中断嵌套就要加8个字的空间,嵌套过深,可能导致MSP溢出。 有个疑问:为什么尾链可以不保存,而嵌套必须保存。原因:中断嵌套发生于ISR正在运行,所以需要保护当前ISR的一些状态。而尾链发生于ISR执行完毕,故没有必要保护ISR状态。
本文档为【STM32学习笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_963767
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:0
分类:工学
上传时间:2019-06-28
浏览量:20