目录 第1章概述1 1.1初识嵌入式系统1 1.1.1运行硬件系统1 1.1.2实践体系简介3 1.1.3编译、下载与运行第一个嵌入式程序4 1.2嵌入式系统的定义、发展简史、分类及特点5 1.2.1嵌入式系统的定义5 1.2.2嵌入式系统的由来及发展简史6 1.2.3嵌入式系统的分类7 1.2.4嵌入式系统的特点8 1.3嵌入式系统的入门问题、知识体系及学习建议9 1.3.1嵌入式系统的入门问题9 1.3.2嵌入式系统的知识体系12 1.3.3基础阶段的学习建议13 1.4微控制器与应用处理器简介14 1.4.1MCU简介14 1.4.2以MCU为核心的嵌入式测控产品的基本组成15 1.4.3MAP简介16 1.5嵌入式系统常用术语17 1.5.1与硬件相关的术语17 1.5.2与通信相关的术语18 1.5.3与功能模块相关的术语19 1.6C语言概要20 1.6.1运算符20 1.6.2数据类型22 1.6.3流程控制28 1.6.4函数30嵌入式应用技术——基于TI的MSPM0L1306微控制器1.6.5编译预处理30 本章小结31 习题32 第2章ARM CortexM0+微处理器33 2.1ARM CortexM0+微处理器概述33 2.1.1ARM CortexM0+微处理器内部结构概要33 2.1.2ARM CortexM0+微处理器的内部寄存器35 2.2寻址方式与机器码的获取方法36 2.2.1指令保留字简表与寻址方式36 2.2.2指令的机器码38 2.3基本指令分类解析39 2.3.1数据传送类指令39 2.3.2数据操作类指令42 2.3.3跳转控制类指令45 2.3.4其他指令46 2.4汇编语言的基本语法48 2.4.1汇编语言的格式48 2.4.2常用伪指令简介50 本章小结51 习题52 第3章存储器映像、中断源与硬件最小系统53 3.1MSPM0系列MCU概述53 3.1.1MSPM0系列MCU命名规则53 3.1.2MSPM0存储器映像54 3.1.3MSPM0中断源55 3.2MSPM0L的引脚图与硬件最小系统56 3.2.1MSPM0L的引脚图56 3.2.2MSPM0L硬件最小系统原理图58 3.3由MCU构建通用嵌入式计算机59 3.3.1嵌入式终端开发方式存在的问题与解决办法59 3.3.2提出GEC概念的时机及GEC的定义与特点60 3.3.3由MSPM0L1306构成的GEC61 本章小结64 习题65 第4章GPIO及程序框架66 4.1GPIO通用基础知识66 4.1.1GPIO概念66 4.1.2输出引脚的基本接法66 4.1.3上拉下拉电阻与输入引脚的基本接法67 4.2软件干预硬件的方法67 4.2.1GPIO构件API67 4.2.2GPIO构件的输出测试方法70 4.3认识工程框架71 4.3.1工程框架及所含文件简介71 4.3.2机器码文件及芯片执行流程简析73 4.4GPIO构件的制作过程75 4.4.1端口与GPIO模块——对外引脚与内部寄存器76 4.4.2通过GPIO基本编程步骤点亮一盏小灯77 4.4.3GPIO构件的设计78 4.5第一个汇编语言工程: 控制小灯闪烁82 4.5.1汇编工程文件的组织82 4.5.2汇编语言小灯测试工程主程序83 4.6实验一熟悉实验开发环境及GPIO编程86 本章小结89 习题90 第5章嵌入式硬件构件与底层驱动构件基本规范91 5.1嵌入式硬件构件91 5.1.1嵌入式硬件构件概念与嵌入式硬件构件分类91 5.1.2基于嵌入式硬件构件的电路原理图设计简明规则92 5.2嵌入式底层驱动构件的概念与层次模型95 5.2.1嵌入式底层驱动构件的概念95 5.2.2嵌入式硬件构件与软件构件结合的层次模型96 5.2.3嵌入式软件构件分类96 5.2.4基础构件的基本特征与表现形式97 5.3底层驱动构件的封装规范99 5.3.1基础构件设计的基本原则99 5.3.2编码风格基本规范100 5.3.3头文件的设计规范103 5.3.4源程序文件的设计规范105 5.4硬件构件及其驱动构件的复用与移植方法106 5.4.1硬件构件的复用与移植106 5.4.2驱动构件的移植106 本章小结108 习题109 第6章串行通信模块及第一个中断程序结构110 6.1异步串行通信的通用基础知识110 6.1.1串行通信的基本概念110 6.1.2RS232和RS485总线标准112 6.1.3TTLUSB串口113 6.1.4串行通信编程模型114 6.2基于构件的串行通信编程方法115 6.2.1MSPM0L1306芯片UART对外引脚115 6.2.2UART构件API115 6.2.3UART构件API的发送测试方法116 6.2.4printf的设置方法与使用117 6.3UART构件的制作过程118 6.3.1UART寄存器概述118 6.3.2利用直接地址操作的串口发送打通程序118 6.3.3UART构件设计120 6.4中断机制及中断编程步骤124 6.4.1中断基本概念及处理过程124 6.4.2ARM CortexM0+非内核模块中断编程结构126 6.4.3MSPM0L1306中断编程步骤——以串口接收中断为例129 6.5实验二串口通信及中断实验131 本章小结133 习题134 第7章定时器相关模块135 7.1定时器通用基础知识135 7.2MSPM0L1306中的定时器136 7.2.1ARM CortexM0+内核定时器SysTick136 7.2.2Timer模块的基本定时功能141 7.3脉宽调制143 7.3.1脉宽调制通用基础知识143 7.3.2基于构件的PWM编程方法145 7.4输入捕捉与输出比较148 7.4.1输入捕捉与输出比较通用基础知识149 7.4.2基于构件的输入捕捉和输出比较编程方法149 7.5实验三定时器及PWM实验154 本章小结155 习题156 第8章Flash在线编程、ADC与DAC157 8.1Flash在线编程157 8.1.1Flash在线编程的通用基础知识157 8.1.2基于构件的Flash在线编程方法158 8.1.3Flash构件的制作过程161 8.2ADC165 8.2.1ADC的通用基础知识165 8.2.2基于构件的ADC编程方法169 8.2.3ADC构件的制作过程172 8.3DAC175 8.3.1DAC的通用基础知识175 8.3.2基于构件的DAC编程方法176 8.4实验四ADC实验177 本章小结178 习题179 第9章SPI、I2C与DMA180 9.1串行外设接口模块180 9.1.1串行外设接口的通用基础知识180 9.1.2基于构件的SPI通信编程方法183 9.2集成电路互联总线模块188 9.2.1集成电路互联总线的通用基础知识188 9.2.2基于构件的I2C通信编程方法193 9.3直接存储器存取198 9.3.1DMA的通用基础知识198 9.3.2基于构件的DMA编程方法199 9.4实验五SPI通信实验201 本章小结202 习题203 第10章系统时钟与其他功能模块204 10.1时钟系统204 10.1.1时钟系统概述204 10.1.2时钟模块寄存器及编程实例206 10.2复位与看门狗模块209 10.2.1复位209 10.2.2看门狗211 10.3电源控制模块与CRC校验模块211 10.3.1电源控制模块211 10.3.2CRC校验模块213 10.4比较器与运算放大器模块215 10.4.1比较器215 10.4.2运算放大器216 10.5实验六综合实验217 本章小结218 习题218 第11章实时操作系统初步219 11.1无操作系统与实时操作系统219 11.1.1无操作系统时的程序运行路线219 11.1.2实时操作系统下的程序运行路线220 11.1.3实时操作系统与非实时操作系统220 11.2RTOS中的常用基本概念及线程的三要素221 11.2.1与线程相关的基本概念221 11.2.2线程的三要素及四种状态222 11.2.3线程的三种基本形式225 11.3RTOS下编程框架227 11.3.1RTThread下基本要素模板列表227 11.3.2第一个样例程序功能及运行228 11.3.3RTThread工程框架229 11.4RTOS中同步与通信的编程方法233 11.4.1RTOS中同步与通信基本概念234 11.4.2事件235 11.4.3消息队列240 11.4.4信号量246 11.4.5互斥量250 本章小结254 习题255 第12章进一步学习指导256 12.1关于更为详细的技术资料256 12.2关于嵌入式系统稳定性问题256 参考文献258