跟工程师学嵌入式开发-基于STM32和μCOS-III

本书特色

[

本书选用的STM32芯片基于ARM Cortex-M3体系结构,根据基于MCU的嵌入式技术实际应用需求,合理地选择了多种常用的重要外设接口,如USART、SPI、I2C、FSCM、SDIO总线、以太网等,结合丰富的实例及工程源代码,由浅入深、系统全面地介绍嵌入式系统的底层工作原理。在此过程中,通过穿插多个综合示例的讲解,如命令行外壳程序Shell、eFat文件系统、Telnet远程控制、?C/OS-III实时操作系统的移植过程,无论是嵌入式的初学者,还是有一定开发经验的工程师都能从中获益,使读者既能系统全面地掌握嵌入式开发所需的软硬件知识,又能锻炼他们的综合开发能力,为将来从事嵌入式开发方面的工作奠定坚实的基础。

]

作者简介

[

谭贵,男,北京大学计算机科学与技术学士毕业,现供职于富士康科技集团,热爱嵌入式开发技术,精通C、Java语言,Tcl和bash脚本应用;熟悉从MCU裸板外设驱动开发和uCosII实时操作系统的移植,以及基于Linux系统的嵌入式应用开发。

]

目录

第1章 开发利器:STM32库和MDK Keil 11.1 学习启航:闪烁的跑马灯 11.1.1 实验结果呈现 11.1.2 实验分析 21.1.3 配置GPIO引脚 51.1.4 实验控制逻辑 61.2 STM32库结构和CMSIS标准 81.2.1 STM32库层次结构 91.2.2 CMSIS层次结构 91.2.3 STM32库结构中的文件关系 101.2.4 STM32库函数命名规则 131.2.5 STM32库常见的几个状态类型 131.3 工程开发环境设置 141.3.1 有关MDK 141.3.2 使用MDK建立工程的步骤 15第2章 STM32体系结构 252.1 总线与通信接口 252.1.1 总线组成 252.1.2 重要的总线术语 262.2 STM32功能框架 272.2.1 系统组成 272.2.2 总线单元及挂接设备 282.3 STM32存储器映射 292.3.1 独立编址 302.3.2 统一编址(存储器映像编址) 312.3.3 CM3外设地址空间映射 322.3.4 地址空间映射详解 342.4 STM32时钟结构 392.4.1 STM32F103ZET6的时钟树 392.4.2 时钟树二级框架 402.4.3 时钟启用过程 412.5 系统时钟树与地址空间映射的关系 43第3章 STM32系统启动过程分析 443.1 CM3的复位序列 443.1.1 堆栈 453.1.2 向量表 473.2 STM32启动代码分析 493.3 STM32系统时钟初始化 523.3.1 时钟源的选择 523.3.2 系统时钟设置 563.4 程序运行环境初始化函数__main() 603.4.1 回顾编译和链接过程 603.4.2 映像文件的组成 613.4.3 映像的加载过程 633.4.4 由MDK集成环境自动生成的分散加载文件 653.4.5 _main()函数的作用 66第4章 通用GPIO操作 684.1 实验结果预览:LED跑马灯 684.2 GPIO基本知识 684.2.1 GPIO分组管理及其引脚 694.2.2 GPIO工作模式及其配置 694.2.3 GPIO引脚的写入和读出 714.3 实验代码解析 744.3.1 实验现象原理分析 744.3.2 源代码分析 784.4 创建工程 814.4.1 建立工程目录结构 814.4.2 导入源代码文件 814.4.3 编译执行 824.5 编译调试 824.5.1 调试方法 824.5.2 栈和变量观察窗口 834.5.3 运行程序并调试:一个函数一个断点 844.5.4 运行程序并调试:多个函数多个断点 86第5章 外部中断EXTI操作 905.1 实验结果预览:LED跑马灯_中断控制 905.2 异常与中断 915.2.1 Cortex-M3的异常向量 915.2.2 异常向量表 925.3 NVIC与中断控制 935.3.1 NVIC简述 935.3.2 NVIC与外部中断 935.3.3 NVIC中断的优先级 945.3.4 NVIC初始化 955.4 EXTI基本知识 975.4.1 EXTI简介 975.4.2 EXTI控制器组成结构 975.4.3 GPIO引脚到EXTI_Line的映射 1005.4.4 EXTI_Line到NVIC的映射 1025.5 实验代码解析 1035.5.1 工程源码的逻辑结构 1035.5.2 实验代码软硬件原理 1045.5.3 实验代码分析 1075.6 创建工程 1095.6.1 建立工程目录结构 1095.6.2 导入源代码文件 1095.6.3 编译执行 1105.7 编译调试 1115.7.1 打开内存窗口 1115.7.2 设置断点 1115.7.3 运行程序并调试 112第6章 USART接口 1156.1 实验结果预览 1156.1.1 实验准备工作 1156.1.2 实验现象描述 1166.2 USART基本知识 1176.2.1 串行异步通信协议 1176.2.2 USART与接口标准RS-232 1186.3 STM32 USART结构 1196.3.1 USART工作模式 1196.3.2 精简的USART结构 1196.3.3 USART单字节收发过程 1206.4 USART寄存器位功能定义 1216.4.1 状态寄存器(USART_SR) 1216.4.2 数据寄存器(USART_DR) 1226.4.3 控制寄存器1(USART_CR1) 1226.4.4 控制寄存器2(USART_CR2) 1236.4.5 控制寄存器3(USART_CR3) 1236.4.6 分数波特率寄存器USART_BRR 1246.4.7 USART模块寄存器组 1256.4.8 USART模块初始化函数 1266.4.9 USART常用函数功能说明 1276.5 USART实验代码分析 1286.5.1 实验电路(硬件连接关系) 1286.5.2 工程源代码文件层次结构 1306.5.3 应用层(主程序控制逻辑) 1316.5.4 用户驱动层 1336.5.5 函数printf()重定向 1356.6 创建工程 1356.6.1 建立工程目录结构 1356.6.2 创建文件组和导入源文件 1366.6.3 编译执行 137第7章 USART综合应用:命令行外壳程序Shell 1387.1 实验结果预览 1387.2 基于USART的I/O函数 1397.2.1 字符及字符串获取函数:xgetc()和xgets() 1397.2.2 字符及字符串打印函数:xputc()和xputs() 1417.3 可变参数输出函数xprintf() 1427.3.1 可变参数 1427.3.2 可变参数宏的使用与作用 1437.3.3 用可变参数宏实现自己的格式化输出函数xprintf() 1447.4 Shell外壳 1457.4.1 Shell命令管理结构 1467.4.2 Shell命令解析过程 1477.4.3 命令函数之参数解析 1507.5 建立工程,编译和运行 1517.5.1 创建和配置工程 1517.5.2 编译执行 153第8章 I2C接口 1548.1 实验结果预览:轮询写入/读出EEPROM数据 1548.2 I2C总线协议 1558.2.1 总线特点 1558.2.2 I2C应用结构 1558.2.3 总线信号时序分析 1568.3 STM32 I2C模块 1588.3.1 I2C组成框图 1588.3.2 I2C主模式工作流程 1598.3.3 I2C中断及DMA请求 1618.4 I2C EEPROM读写示例及分析 1628.4.1 示例电路连接 1628.4.2 app.c文件中的main()函数 1638.4.3 eeprom.h文件 1668.4.4 eeprom.c文件 1678.4.5 shell.c文件 1748.5 建立工程,编译及运行 1758.5.1 创建和配置工程 1758.5.2 编译执行 176第9章 DMA接口 1779.1 实验结果预览 1779.2 通用DMA的作用及特征 1789.3 STM32 DMA基本知识 1789.3.1 DMA与系统其他模块关系图 1789.3.2 STM32 DMA组成 1799.4 实验示例分析 1839.4.1 main.c文件中的main()函数 1849.4.2 USART1的初始化 1849.4.3 DMA通道中断处理函数 1899.4.4 sysTick中断处理函数 1909.4.5 DMA通道配置的其他寄存器 1919.4.6 DMA用户测试命令及其执行函数 1929.5 建立工程,编译和执行 1939.5.1 建立以下工程文件夹 1949.5.2 创建文件组和导入源文件 1949.5.3 编译运行 194第10章 实时时钟RTC 19510.1 实验结果预览 19510.2 STM32 RTC模块 19610.2.1 STM32后备供电区域 19610.2.2 RTC组成 19910.3 RTC实验设计与源码分析 20410.3.1 硬件连接和GPIO资源 20410.3.2 实验源代码逻辑结构 20410.3.3 源代码分析 20510.4 建立工程,编译和执行 21210.4.1 建立以下工程文件夹 21210.4.2 创建文件组和导入源文件 21210.4.3 编译执行 213第11章 系统定时器SysTick 21411.1 SysTick简述 21411.2 SysTick工作过程 21411.3 SysTick寄存器位功能定义 21511.3.1 控制和状态寄存器:STK_CTRL 21511.3.2 重载寄存器:STK_LOAD 21611.3.3 当前计数值寄存器:STK_VAL 21711.3.4 校正寄存器:STK_CALIB 21711.3.5 SysTick模块寄存器组 21711.3.6 配置SysTick定时器 21811.4 基于SysTick的延时函数代码分析 22011.4.1 实现原理 22011.4.2 实现代码分析 22011.4.3 基于SysTick延时的LED闪烁命令 22311.5 建立工程,编译和执行 22411.5.1 建立以下工程文件夹 22411.5.2 创建文件组和导入源文件 22411.5.3 编译运行 226第12章 SPI接口 22712.1 实验现象预览:轮询写入/读出SPI Flash数据 22712.2 SPI总线协议 22812.2.1 总线信号及其应用结构 22812.2.2 SPI内部结构与工作原理 22912.3 STM32 SPI模块 23112.3.1 SPI组成框图 23112.3.2 STM32 SPI主模式数据收发过程 23212.3.3 SPI中断及DMA请求 23412.4 W25Q128FV规格说明 23412.4.1 W25Q128FV状态和控制管理 23512.4.2 W25Q128FV常用指令 23612.5 程序入口与SPI初始化代码 23712.5.1 实验硬件资源 23712.5.2 工程入口文件main.c 23812.5.3 spiflash.c文件中的spiFlash_Init()函数 23912.6 SPI Flash测试代码分析 24312.6.1 spiflash.c文件中的SPI Flash测试函数spiTest() 24412.6.2 SPI Flash ID读取函数sFLASH_readID() 24512.6.3 扇区擦除函数sFLASH_eraseSector() 24612.6.4 Flash页写函数sFLASH_writePage() 24612.6.5 Flash读函数sFLASH_readBuffer() 24712.6.6 Flash字节发送函数sFLASH_SendByte() 24812.7 向Shell添加SPI测试指令spitest 24912.8 建立工程,编译和执行 25012.8.1 建立以下工程文件夹 25012.8.2 创建文件组和导入源文件 25012.8.3 编译运行 252第13章 网络接口:以太网 25313.1 网络体系结构简介 25313.1.1 三种网络模型 25313.1.2 以太网标准(Ethernet) 25613.2 ENC28J60知识 25713.2.1 ENC28J60概述 25713.2.2 控制寄存器 25913.2.3 以太网缓冲器 26013.2.4 PHY寄存器 26113.2.5 ENC28J60 SPI指令集 26113.2.6 ENC28J60初始化 26313.2.7 使用ENC28J60收发数据 26813.2.8 ENC28J60驱动代码总结 27213.3 uIP协议栈简介 27413.3.1 uIP特性 27413.3.2 uIP应用接口 27513.3.3 uIP的初始化及配置函数 27713.3.4 uIP的主程序循环 27713.4 uIP移植分析 27913.4.1 下载uIP1.0版源码文件 279

封面

跟工程师学嵌入式开发-基于STM32和μCOS-III

书名:跟工程师学嵌入式开发-基于STM32和μCOS-III

作者:谭贵

页数:未知

定价:¥88.0

出版社:电子工业出版社

出版日期:2017-10-01

ISBN:9787121327254

PDF电子书大小:96MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注