1、第一章 嵌入式系统基础知识1. 嵌入式系统基础知识计算机系统的两个发展分支通用计算机与嵌入式计算机嵌入式系统的一般定义、IEEE定义一般定义:以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统。(技术角度)嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。(系统角度)广义定义:任何一个非计算机的计算系统。IEEE(国际电气和电子工程师协会)定义:嵌入式系统是“用于控制、监视或者辅助操作的机器、设备或装置”。嵌入式系统4个组成部分嵌入式微处理器、
2、外围硬件设备、嵌入式操作系统、用户应用程序嵌入式系统的三个基本要素嵌入性、专用性、计算机系统嵌入式系统的软硬件特点硬件方面:稳定性、低功耗、体积受限、看门狗电路、成本低、系统资源少软件方面:实时性、可裁剪性、精简性、人机界面要求不高嵌入式系统的硬件架构以嵌入式处理器为中心,配置存储器、I/0设备、通信模块以及电源等必要的辅助接口组成。嵌入式系统的硬件核心嵌入式微处理器嵌入式处理器的种类嵌入式微处理器、嵌入式微控制器、嵌入式DSP、嵌入式SOCS0CSOC是指在单芯片上集成数字信号处理器、微控制器、存储器、数据转换器、接口电路等电路模块,可以直接实现信号采集、转换、存储、处理等功能。2. 嵌入式
3、系统硬件嵌入式微处理器的体系结构冯诺依曼结构:单一的程序和数据总线。哈佛结构:独立的程序和数据总线。RISC(精简指令集计算机)的概念及思想精华1979年,美国加州伯克利分校提出了RISC的概念,基本思想是尽量简化计算机指令功能,只保留那些功能简单,能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序实现。RISC思想的精华就是通过简化计算机指令功能、简化计算机指令格式,使指令的平均执行周期减少,同时大量使用通用寄存器来提高计算机的工作主频,提高程序的速度。(通常,RISC计算机的速度是同等CISC计算机的3倍。)ARM概念及ARM处理器系列产品ARM(Advanced RISC Mac
4、hines)是一个CPU内核。ARM7系列(有ARM7TDMI、ARM720T、ARM7EJ-S)ARM9系列(有ARM920T、ATM922T、ARM940T、ARM926EJ-S等)ARM10、11系列ARM Cortex系列(Cortex-A、Cortex-R、Cortex-M)3. 嵌入式软件及嵌入式操作系统嵌入式系统软件架构应用程序、协议线、嵌入式操作系统、板支持包/设备驱动、硬件嵌入式操作系统的功能和架构功能:任务调度、进程间通信、文件管理(可选)、中断处理、存储器管理(可选)架构 Kernel: Memory Mgmt.、I/O System 、Network Stack 、De
5、vice Drivers 、File Systems当前流行的嵌入式操作系统Palm OS 、Windows CE 、Linux(uClinux) 、RT Linux、uC/OS 、其它商业OS:QNX、VxWorks等第二章 CM3体系结构与STM321. CM3Cortex-M3是一个32位处理器内核。CM3采用了哈佛结构,拥有独立的指令总线和数据总线。程序计数寄存器R15的作用指向当前程序地址特殊功能寄存器类别和作用程序状态字寄存器组:记录ALU标志(0标志、进位标志、负数标志、溢出标志)、执行状态以及当前服务的中断号。中断屏蔽寄存器组:PRIMASK失能所有的中断、FAULTMASK失
6、能所有的fault、BASEPRI失能所有优先级不高于某个具体数值的中断。控制寄存器:定义特权状态,并且决定使用哪一个堆栈指针。Cortex-M3处理器支持两种操作模式和两级特权操作两种操作模式 处理者模式:异常服务例程的代码包括中断服务; 线程模式:普通应用程序的代码。两级特权特权级和用户级,提供一种存储器访问保护机制,使得普通用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。异常及包括的类型在ARM编程领域中,凡是打断程序顺序执行的事件,都被称为异常。包括:外部中断、不可屏蔽中断、指令执行了“非法操作”或者访问被禁的内存区间产生的各种错误fault。向量表及其工作工程向量表是一个W
7、ORD(32位整数)数组,每个下标对应一种异常,该下标元素的值则是该ESR的入口地址。向量表在地址空间中的位置是可以设置的,通过NVIC中的一个重定位寄存器来指出向量表的地址。在复位后,该寄存器的值为0。因此,在地址0处必须包含一张向量表,用于初始时的异常分配。CM3的复位序列在离开复位状态后,CM3做的第一件事就是读取下列两个32位整数的值:从地址0x00000000处取出MSP的初始值从地址0x00000004处取出PC的初始值这个值是复位向量,LSB必须是1。然后从这个值所对应的地址处取指。CM3的三级流水线取指令、解码、执行CM3指令集Cortex-M3只使用Thumb-2指令集,允许
8、32位指令和16位指令水乳交融,代码密度与处理性能两手抓。2. STM32架构STM32存储映射代码区、片上SRAM、用户设备的存储映射、Cortex-M3寄存器启动配置从用户FLASH启动、从系统存储器启动、从嵌入式SRAM启动STM32的低功耗模式有3种睡眠模式(CM3内核停止,外设仍然运行)停止模式(所有时钟都停止)待机模式(1.8V内核电源关闭)STM32的安全保障内部复位电路、时钟安全系统、两只看门狗第三章(P28) STM32程序设计外设的初始化和设置步骤在设置一个外设前,必须先使能它的时钟第四章 STM32电源、时钟及复位STM32电源配置STM32时钟源HSE、HSI、LSE、
9、LSI实际应用中,经常出现由于晶振在运行中失去作用,导致系统出错。STM32内部的CCS解决了这种问题,一旦HSE失效,CCS系统将系统时钟源切换到HSI启动模式根据启动设置,可将用户Flash、系统Flash、内部SRAM映射到0x00000000起始的区域。启动代码及其功能嵌入式系统的启动还需要一段启动代码,类似于启动Pc时的BIOS,一般用于完成微控制器的初始化工作和自检。功能:初始化堆栈、定义程序启动地质、中断向量表和中断服务程序入口地址,以及系统复位启动时,从启动代码跳转到用户main函数入口地址。备份区域架构当TAMPER引脚上的信号的电平发生变化(从0变到1或从1变到0,取决于备
10、份控制寄存器BKP_CR的TPAL位),会产生一个入侵检测事件。cf: 固件库:软硬件结合。第五章 STM32F10x标准外设重点:GPIO、NVIC、通用定时器Timer2的时基单元1. RVMDK 不要求掌握2. C语言 指针和构造数据类型构造数据类型:数组、指针、结构体、枚举、共用体3. GPIOGPIO的4种输入和4种输出模式4种输入:浮空输入、带上拉电阻的输入、带下拉电阻的输入、模拟输入4种输出:开漏输出、推挽输出、复用推挽输出、复用开漏输出STM32时钟树设置(P346 10分)STM32库函数4. SysTickSysTick,“系统节拍时钟”,属于ARM Cortex-M3内核
11、的一个“内设”。SysTick的组成时钟的输入源、控制寄存器、私有外设总线SysTick工作原理首先SysTick 从时钟源接口获得时钟驱动,然后从重装寄存器将重装值读入当前计数寄存器,并在时钟驱动下进行减一计数。而当SysTick 发生下溢的时候将计数标志置位,并在满足一定条件的情况下出发SysTick 溢出中断,同时进行一次重装值载入操作。5. USART通用同步异步收发器(不考)配置串口通讯,至少需要设置:字长、波特率、奇偶校验位、停止位3条线:Rx、Tx、GND6. NVIC(不考EXTI)概念中断响应当某个中断来临,会将相应的中断标志位置位。当CPU查询到这个置位的标志位时,将响应此
12、中断,并执行相应的中断服务函数。中断优先级每个中断都具有其优先级,其相互之间的优先关系一般以优先级编号较小者拥有较高优先级。优先级又分为两种:查询优先级和执行优先级。查询优先级和执行优先级当某一时刻有两个或两个以上中断处于挂起状态,则首先执行执行优先级较高的中断。若执行优先级一致,则首先执行查询优先级较高的中断。查询优先级一般以该中断向量在中断向量表中的位置决定。中断嵌套当某个执行优先级较低的中断服务在执行时另一个执行优先级较高的中断来临,则当前优先级较低的中断被打断,CPU转而执行较高优先级的中断服务。中断挂起当某个较高执行优先级的中断服务在执行时另一个优先级较低的中断来临,则因为优先级的关
13、系,较低优先级中断无法立即获得相应,则进入挂起状态(即等待执行)。NVIC嵌套中断向量控制器同Systick定时器一样,NVIC属于ARM Cortex-M3内核的内设之一,用来管理中断嵌套。NVIC的先占优先级和次占优先级管理机制STM32只使用4位序列表示优先级分组,即最大只支持16级中断嵌套管理。7. 通用定时器STM32的定时器资源高级定时器、通用定时器、基本定时器、“专用”定时器、内核Systick定时器通用定时器组成时基单元、输入捕获、输出比较(后两个不要求)时基单元组成计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动装载寄存器(TIMx_ARR)影子寄存器(了解)独立看门狗(了解)ADC类型逐次逼近型、积分型、压频转换型、较为高级的分级型和流水线型