《智能嵌入技术开发与实践》针对内核为ARM Cortex-M3的Cypress FM3微处理器,介绍ARM Cortex-M3架构、原理和应用。FM3微处理器具有丰富的内部外围资源,以此为基础结合实验例程由浅入深的讲解智能嵌入式开发技术。其中包括:(1)基于通用IO口外部设备驱动;(2)多任务信号采集系统的实现;(3)UART多任务串行通讯接口工程设计;(4)USB与PC端数据通讯的实现;(5)CAN总线局域网设计与多任务信息通讯;(6)I2C总线通讯技术;(7)SPI总线通讯技术;(8)多功能定时技术器的应用等。软件开发选择μC/OS-II作为嵌入式操作系统,比较适合本科层次教学,因为μC/OS-II系统具备了内核小、实时性好、易于移植等特点,具有经典操作系统的多任务通讯与同步机制,和LINUX、Android、Window CE等相对复杂的内核相比,代码容易理解和实现多任务程序设计。
(1)本书合理安排智能嵌入开发技术知识体系,结合嵌入式开发技术方向的先行课程和后续课程组织知识点与内容。(2)注重理论和实践结合,融入嵌入式软硬件开发过程和具有工程实践背景的项目案例,体现“教、学、做”一体化,以学生为主体、能力训练为目标,训练学生的模块设计理念和团队合作精神。(3)采用易于获得的实验开发平台,配套开发板采用USB供电,具有成本低、体积小、便于携带等特点,提高实验设备的利用率。(4)本书提供配套课件、实验案例的工程文件及源代码,读者可登录清华大学出版社网站下载使用。
目录
第1章嵌入式系统开发概述1
1.1嵌入式系统概述1
1.1.1嵌入式系统的定义1
1.1.2嵌入式系统的特点1
1.1.3嵌入式微处理器2
1.1.4嵌入式操作系统4
1.2嵌入式系统的组成9
1.2.1嵌入式系统的硬件基础9
1.2.2板级支持包BSP/硬件抽象层HAL11
1.2.3嵌入式系统的软件基础12
1.3嵌入式系统开发现状13
1.3.1简单的嵌入式系统开发13
1.3.2基于实时操作系统的嵌入式系统开发14
1.3.3基于片上系统的嵌入式系统开发14
小结15
习题15
第2章ARM CortexM3微处理器16
2.1ARM CortexM3的内核结构16
2.1.1ARM微处理器的内核演变16
2.1.2ARM CortexM3内核特点17
2.1.3寄存器组19
2.2ARM CortexM3的操作模式21
2.2.1操作模式22
2.2.2特权级别22
2.3中断和异常管理23
2.3.1概述23
2.3.2中断向量表24
2.3.3异常类型28
2.3.4中断控制29
2.4MB9BF506R微处理器简介31
2.4.1MB9BF506R系统概要31
2.4.2总线架构34
2.4.3存储器架构34
2.4.4MB9BF506R的外部总线接口39
2.4.5MB9BF506R的工作模式40
小结41
习题41
第3章嵌入式软件开发基础42
3.1CMSISCortex微控制器软件接口标准42
3.1.1Cortex系列微处理器的数据类型42
3.1.2CMSIS架构42
3.1.3关于启动代码45
3.1.4CMSIS编码规则46
3.1.5CMSIS支持的工具链46
3.2MB9BF506R的外设驱动库47
3.2.1概述47
3.2.2例程的使用方法47
3.3在线编程52
3.3.1Flash在线编程的程序设计53
3.3.2程序的在线升级——BootLoader设计59
3.3.3烧写程序到MCU内部Flash63
3.4系统的低功耗设计65
3.4.1影响系统功耗的因素及处理措施65
3.4.2MB9BF506R的低功耗工作模式67
小结70
习题71
第4章基于μC/OSⅡ的嵌入式软件开发特点72
4.1μC/OSⅡ内核概述72
4.1.1μC/OSⅡ的任务72
4.1.2μC/OSⅡ的任务管理82
4.1.3μC/OSⅡ的时钟节拍与时间管理86
4.1.4μC/OSⅡ的任务的通信与同步89
4.2实现μC/OSⅡ的移植102
4.2.1μC/OSⅡ移植的条件102
4.2.2μC/OSⅡ移植工作102
4.3基于μC/OSⅡ的多任务系统开发108
4.3.1μC/OSⅡ的配置108
4.3.2基于μC/OSⅡ的main函数设计110
4.3.3任务代码的实现112
小结113
习题113
第5章嵌入式系统开发流程114
5.1硬件开发平台114
5.1.1JX MB9BF506R开发板115
5.1.2开发板硬件配置115
5.2嵌入式系统开发环境118
5.2.1安装IAR EmbeddedWorkbench开发环境118
5.2.2安装JLink驱动程序118
5.3在IAR EWARM Workbench中使用JLink调试120
5.3.1程序包的目录结构121
5.3.2打开现有工程进行调试121
5.3.3项目选项的设置123
小结131
习题131
第6章基于μC/OSⅡ的嵌入式系统实验132
6.1流水灯控制132
6.1.1实验目的132
6.1.2实验内容132
6.1.3实验原理及说明132
6.1.4相关初始化寄存器介绍133
6.1.5设备驱动程序介绍134
6.1.6程序设计135
6.1.7实验步骤139
6.2点阵LCD显示控制139
6.2.1实验目的139
6.2.2实验内容139
6.2.3实验原理及说明139
6.2.4相关寄存器介绍143
6.2.5设备驱动程序介绍143
6.2.6程序设计145
6.2.7实验步骤149
6.3基于消息邮箱机制的按键扫描和LED显示控制149
6.3.1实验目的149
6.3.2实验内容149
6.3.3实验原理及说明149
6.3.4相关初始化寄存器介绍151
6.3.5设备驱动程序介绍152
6.3.6程序设计154
6.3.7实验步骤160
6.4基于消息队列机制的温湿度模拟数据采集及显示160
6.4.1实验目的160
6.4.2实验内容160
6.4.3实验原理及说明160
6.4.4A/D相关寄存器163
6.4.5设备驱动程序介绍163
6.4.6程序设计164
6.4.7实验步骤169
6.5利用RS232串口实现与PC通信169
6.5.1实验目的169
6.5.2实验内容169
6.5.3实验原理及说明170
6.5.4UART相关寄存器171
6.5.5设备驱动程序介绍173
6.5.6程序设计174
6.5.7实验步骤177
6.6基于信号量机制的局域网CAN总线通信179
6.6.1实验目的179
6.6.2实验内容179
6.6.3实验原理及说明179
6.6.4CAN的相关寄存器184
6.6.5CAN驱动程序介绍184
6.6.6程序设计190
6.6.7实验步骤200
6.7USB Function实验201
6.7.1实验目的 201
6.7.2实验内容201
6.7.3实验原理及说明201
6.7.4USB Function相关寄存器203
6.7.5设备驱动程序介绍204
6.7.6程序设计205
6.7.7实验步骤213
6.8USB HOST实验214
6.8.1实验目的214
6.8.2实验内容214
6.8.3实验原理及说明214
6.8.4USB HOST相关寄存器217
6.8.5设备驱动程序介绍218
6.8.6程序设计220
6.8.7实验步骤223
6.9综合实例——虚拟示波器224
6.9.1实验目的224
6.9.2实验内容224
6.9.3实验原理及说明224
6.9.4相关初始化寄存器介绍225
6.9.5设备驱动程序介绍227
6.9.6程序设计230
6.9.7实验步骤241
6.10综合实例——多功能数据采集显示系统241
6.10.1实验目的241
6.10.2实验内容241
6.10.3实验原理及说明241
6.10.4实验相关寄存器242
6.10.5设备驱动程序介绍243
6.10.6程序设计243
6.10.7实验步骤251
第7章FM4应用扩展253
7.1FM4介绍253
7.2FM4 S6E2G系列开发套件概述255
7.2.1开发板概述255
7.2.2FM4 S6E2G系列开发套件的跳线设置255
7.3FM4 S6E2G系列开发套件硬件构成257
7.3.1FM4 S6E2G系列开发套件的原理257
7.4FM4 S6E2G系列开发套件的开发环境配置270
7.4.1软件安装270
7.4.2卸载软件273
7.4.3测试操作273
7.5FM4 S6E2G系列开发套件的开发实训275
7.5.1概述275
7.5.2实验背景276
7.5.3实验A: 使用PDL的ADC278
7.5.4实验B: 不使用PDL的ADC282
7.5.5实验测试285
小结286
习题286
参考文献288
第5章嵌入式系统开发流程本章学习目标 熟悉嵌入式开发平台: JX MB9BF506R开发板; 熟练使用嵌入式系统开发环境进行嵌入式系统开发; 熟悉基于JX MB9BF506R开发板进行嵌入式系统开发的软硬件流程。本章介绍嵌入式开发系统环境的软件以及硬件资源,介绍嵌入式开发平台硬件的具体设置,最后介绍ARM CortexM3开发环境的安装、配置和使用,为第6章的实践教程做好准备工作。5.1硬件开发平台图5.1JX MB9BF506R开发板对于基于嵌入式OS的系统开发,初学者选择合适的开发平台很重要。如图5.1所示,JX MB9BF506R开发板是基于Cypress公司的MB9BF506系列微处理器的全功能开发板,包含一块128×64的点阵LCD,三个用户LED,4个按键,两个CAN通道,两个UART通道,带有I2C接口的RTC单元、Nand Flash等外围资源,同时还支持IO口扩展,功能齐全且价格便宜,是应用开发的很好的平台,也是初学者的首选。在软件开发上,针对该开发板的微处理器(ARM CortexM3)移植了μC/OSⅡ 2.86操作系统内核,为用户基于μC/OSⅡ进行软件开发提供了良好的先决条件,并免费提供所有内部外围设备的驱动库源代码和说明文档,既使得软件开发人员不必过多涉及底层硬件,又提高了开发效率。5.1.1JX MB9BF506R开发板JX MB9BF506R开发板具有如下特性。(1) CPU: MB9B506系列处理器ARM CortexM3TM,64KB SRAM内存,电压(2.7~5.5V),工作频率80MHz,包含定时器、16通道AD模块、片上Flash、片上SRAM和各类通信接口。(2) 存储器: 32M×8b NAND Flash。(3) UART: 两个UART通道。(4) 显示: 一块128×64的点阵LCD。(5) 时钟模块: 高精度I2C接口的实时时钟模块(RX8025T)。(6) USB接口: USB主机接口(TypeA USB接口),USB 设备接口(TypeB USB接口)。(7) CAN接口: 两个高速CAN通道。(8) 调试接口: 板上标准20针的JTAG接口。(9) 按键: 4个用户按键,1个复位按键。(10) LED: 3个用户LED。(11) 电压: 5V和3.3V供电的电压选择。(12) 电位计: 可以调节AD输入电压。(13) 支持USB、JTAG和外部15V电源供电。第5章嵌入式系统开发流程5.1.2开发板硬件配置1. 开发板元件分布MB9BF506R开发板的硬件布局如图5.2所示。图5.2JX MB9BF506R开发板硬件布局2. 跳线列表JX MB9BF506R开发板上跳线设置如表5.1所示。表5.1跳线设置跳 线 名 称功能设置J101~J103×1电源选择短接 J101: 选择外部15V电源供电J104×2电压选择短接 1,2: 5V短接 2,3: 3.3VJUSB-JUSB USB主机/设备选择短接 1,2: USB 设备短接 2,3: USB 主机J105模式设定短接: 编程模式断开: 标准模式J106晶振选择短接 1,2: 当使用4MHz的晶振时短接 2,3: 当使用48MHz的晶振时J107P22连接短接: 连接 P22 (UART_TX0) 和MAX3232断开: 断开 P22 (UART_TX0) 和MAX3232J701分压选择短接: 当使用5V供电时断开: 当使用3.3V供电时跳线设置时,需要注意以下两点。(1) 不要同时短接J101~J103。当使用Keil ULink ME时,不能使用JTAG供电。(2) 当使用Keil ULink ME时, 只能选择3.3V供电。3. UART在线编程的设置UART在线编程设置如表5.2所示。续表表5.2UART在线编程设置跳 线 名 称功能设置UART0DB9接口通过RS232线,连接PCJ106晶振选择断开J105模式设定短接J107P22连接短接4. USB在线编程的设置