嵌入式系统原理及应用-基于ARM Cortex-M3内核的STM32F103系列微控制器

本书特色

[

本书通过与常见的桌面通用系统比较,引入嵌入式系统的基本概念,主要介绍目前*新的ARM Cortex�睲3内核以及意法半导体公司推出的基于ARM Cortex�睲3内核的STM32F103微控制器。
全书共分3篇 第1篇(第1、2章)为系统篇,介绍嵌入式系统及其开发的基本概念;第2篇(第3、4章)为内核篇,分析ARM Cortex�睲3内核以及基于ARM Cortex�睲3内核的STM32F103微控制器的体系结构、工作原理、编程模型和开发方法等;第3篇(第5~12章)为片内外设篇,基于STM32F103微控制器讲述常用的片上外设?M接口,包括GPIO、定时器、EXTI、DMA、ADC、USART、SPI和I2C等,并分别给出在KEIL MDK下采用库函数方式使用这些片上外设?M接口进行应用开发的典型案例。
本书适合作为高等院校计算机、自动化、电子信息等电气信息类专业高年级本科生、研究生嵌入式相关课程的教材,同时可供从事嵌入式开发的技术和研究人员参考。

]

内容简介

[

本书首先通过与个人计算机(PC)的比较,引出嵌入式系统的基本概念,从零开始、由浅入深引导读者进入嵌入式系统的世界,讲解嵌入式系统的开发过程,然后以目前*的ARM Cortex-M3内核以及意法半导体公司推出的基于ARM Cortex-M3内核的STM32F103微控制器为目标硬件平台,按照基本原理、内部结构、工作机制和相关库函数的顺序循序渐进、逐步展开,详细介绍STM32F103微控制器各个常用片上外设∕接口(包括GPIO、定时器、EXTI、DMA、ADC、USART、SPI和I2C等),并给出在嵌入式软件开发工具KEIL MDK下使用C语言采用库函数方式开发STM32F103微控制器的典型案例。 为了降低读者的学习成本和学习难度,本书不仅提供了书中所有程序的源码,而且在STM32F103微控制器典型开发案例中回顾了嵌入式相关的硬件基础知识、C语言编程技巧和方法。针对目前身边暂时没有STM32F103微控制器硬件的读者,本书还介绍嵌入式系统的软件仿真调试方法,指导读者在嵌入式软件开发工具KEIL MDK下调试自己编写的基于STM32F103微控制器的应用程序,使读者无需购买嵌入式硬件开发板也可以完成对自己编写的嵌入式程序的调试和验证。 本书适合作为高等院校计算机、自动化、电子信息等电气信息类专业高年级本科生、研究生“嵌入式”相关课程的教材,同时可供从事嵌入式开发的技术和研究人员参考。尤其面向嵌入式初学者,本书在调研和分析当前嵌入式开发工程师的人才需求和能力要求的基础上,提出了从嵌入式“菜鸟”到嵌入式工程师的进阶之路。

]

目录

第1篇系统篇 第1章嵌入式系统概述3 1.1嵌入式系统的定义和特点3 1.1.1嵌入式系统的定义3 1.1.2嵌入式系统和通用计算机比较4 1.1.3嵌入式系统的特点5 1.2嵌入式系统的硬件6 1.2.1嵌入式处理器7 1.2.2嵌入式存储器15 1.2.3嵌入式I/O设备18 1.2.4嵌入式I/O接口18 1.3嵌入式系统的软件21 1.3.1无操作系统的嵌入式软件22 1.3.2带操作系统的嵌入式软件24第1篇系统篇第1章嵌入式系统概述31.1嵌入式系统的定义和特点31.1.1嵌入式系统的定义31.1.2嵌入式系统和通用计算机比较41.1.3嵌入式系统的特点51.2嵌入式系统的硬件61.2.1嵌入式处理器71.2.2嵌入式存储器151.2.3嵌入式I/O设备181.2.4嵌入式I/O接口181.3嵌入式系统的软件211.3.1无操作系统的嵌入式软件221.3.2带操作系统的嵌入式软件241.4嵌入式系统的分类271.4.1按硬件(嵌入式处理器)划分271.4.2按软件复杂度划分271.4.3按实时性划分281.4.4按使用对象划分281.5嵌入式系统的应用281.5.1国防军事281.5.2工业控制291.5.3消费电子301.5.4办公自动化产品301.5.5网络和通信设备301.5.6汽车电子31◆嵌入式系统原理及应用目录1.5.7金融商业311.5.8生物医学321.5.9信息家电321.6本章小结34习题134第2章嵌入式系统开发352.1嵌入式系统的开发环境、开发工具和调试方式352.1.1嵌入式系统的开发环境352.1.2嵌入式系统的开发工具372.1.3嵌入式系统的调试方式432.2嵌入式系统的开发语言502.2.1嵌入式硬件开发语言502.2.2嵌入式软件开发语言512.3嵌入式系统的开发过程532.3.1需求分析542.3.2系统设计552.3.3系统实现612.3.4系统测试702.3.5系统发布732.4嵌入式开发工程师之路742.4.1嵌入式行业和人才的现状分析742.4.2嵌入式开发工程师的能力要求742.4.3嵌入式开发工程师的进阶之路752.5本章小结77习题278第2篇内核篇第3章ARM Cortex�睲3处理器813.1ARM Cortex�睲3组成结构813.1.1Cortex�睲3内核823.1.2调试系统843.2ARM Cortex�睲3总线接口863.2.1Cortex�睲3总线接口类型873.2.2Cortex�睲3总线连接方案883.3ARM Cortex�睲3编程模型893.3.1工作状态893.3.2数据类型893.3.3寄存器893.3.4指令系统933.3.5操作模式和特权分级963.3.6异常和中断983.3.7双堆栈机制1053.4ARM Cortex�睲3存储器系统1073.4.1存储器映射1073.4.2位带操作1103.4.3存储格式1123.5ARM Cortex�睲3的低功耗模式1133.6本章小结114习题3115第4章基于ARM Cortex�睲3的STM32微控制器1174.1从Cortex�睲3到基于Cortex�睲3的MCU1174.2基于Cortex�睲3的STM32系列微控制器概述1184.2.1产品线1184.2.2命名规则1244.2.3生态系统1254.2.4开发方法1314.2.5学习之路1344.3STM32F103微控制器基础1364.3.1概述1364.3.2主系统结构1374.3.3功能模块1394.3.4引脚定义1404.3.5存储器组织1414.4STM32F103微控制器的*小系统1454.4.1电源电路1454.4.2时钟电路1484.4.3复位电路1494.4.4调试和下载电路1504.4.5其他1514.5STM32F103微控制器的时钟系统1534.5.1输入时钟1534.5.2系统时钟1554.5.3由系统时钟分频得到的其他时钟1554.5.4STM32F10x时钟系统相关库函数1574.6STM32F103微控制器的低功耗模式1624.6.1睡眠模式1634.6.2停机模式1634.6.3待机模式1644.7STM32F103微控制器的安全特性1654.7.1看门狗1654.7.2电源检测1664.7.3时钟安全系统1664.8STM32F103微控制器的启动过程1674.8.1启动过程和启动代码概述1674.8.2ARM启动代码所需汇编语言基础1674.8.3STM32F103的启动代码分析1714.8.4STM32F103的启动过程分析1824.9建立**个STM32F103应用工程1854.9.1STM32F10x标准外设库的下载和认知1854.9.2嵌入式开发工具的下载和安装1984.9.3配置STM32F103工程1984.9.4编写用户程序源代码2064.9.5编译和链接STM32F103工程2074.9.6调试STM32F103工程2084.9.7将可执行程序下载到STM32F103运行2154.10本章小结217习题4217第3篇片内外设篇第5章GPIO2215.1GPIO概述2215.2STM32F103的GPIO工作原理2215.2.1内部结构2225.2.2工作模式2245.2.3输出速度2245.2.4复用功能重映射2255.2.5外部中断映射和事件输出2285.2.6主要特性2285.3STM32F10x的GPIO相关库函数2285.3.1GPIO_DeInit2295.3.2GPIO_Init2295.3.3GPIO_SetBits2315.3.4GPIO_ResetBits2315.3.5GPIO_Write2325.3.6GPIO_ReadOutputDataBit2325.3.7GPIO_ReadOutputData2325.3.8GPIO_ReadInputDataBit2335.3.9GPIO_ReadInputData2335.3.10GPIO_EXTILineConfig2335.3.11GPIO_PinRemapConfig2345.4STM32F103的GPIO开发实例——LED闪烁2355.4.1功能要求2355.4.2硬件设计2355.4.3软件流程设计2365.4.4软件代码实现2365.4.5软件模拟仿真2385.4.6下载到硬件运行2415.4.7开发经验小结——STM32微控制器开发的一般步骤2415.5STM32F103的GPIO开发实例——按键控制LED亮灭2415.5.1功能要求2415.5.2硬件设计2415.5.3软件流程设计2425.5.4软件代码实现2435.5.5软件模拟仿真2445.5.6下载到硬件运行2465.5.7开发经验小结——使用库函数开发STM32F103的GPIO2465.6本章小结247习题5248第6章定时器2496.1定时器概述2496.1.1延时的实现2496.1.2可编程定时/计数器功能概述2516.2STM32F103的定时器概述2526.3STM32F103的基本定时器TIM6和TIM72526.3.1内部结构2536.3.2时钟源2536.3.3计数模式2546.3.4主要特性2546.4STM32F103的通用定时器TIM2—TIM52546.4.1内部结构2546.4.2时钟源2566.4.3计数模式2576.4.4输出比较模式2596.4.5PWM输出模式2596.4.6输入捕获模式2626.4.7PWM输入模式2626.4.8单脉冲模式2636.4.9编码器接口2636.4.10主要特性2636.5STM32F103的高级定时器TIM1和TIM82646.5.1内部结构2646.5.2时钟源2646.5.3功能描述2666.5.4主要特性2666.6STM32F10x定时器相关库函数2666.6.1TIM_DeInit2676.6.2TIM_TimeBaseInit2686.6.3TIM_OC1Init2696.6.4TIM_OC2Init2706.6.5TIM_OC3Init2716.6.6TIM_OC4Init2716.6.7TIM_OC1PreloadConfig2726.6.8TIM_OC2PreloadConfig2726.6.9TIM_OC3PreloadConfig2726.6.10TIM_OC4PreloadConfig2736.6.11TIM_ARRPreloadConfig2736.6.12TIM_CtrlPWMOutputs2746.6.13TIM_Cmd2746.6.14TIM_GetFlagStatus2756.6.15TIM_ClearFlag2756.6.16TIM_ITConfig2766.6.17TIM_GetITStatus2766.6.18TIM_ClearITPendingBit2776.7STM32F103定时器开发实例——精确定时的LED闪烁2776.7.1功能要求2776.7.2硬件设计2776.7.3软件流程设计2786.7.4软件代码实现2796.7.5软件模拟仿真2816.7.6下载到硬件运行2836.7.7开发经验小结——使用printf在调试窗口输出2846.8STM32F103定时器开发实例——PWM输出2856.8.1功能要求2856.8.2硬件设计2866.8.3软件流程设计2866.8.4软件代码实现2886.8.5软件模拟仿真2896.8.6下载到硬件运行2916.8.7开发经验小结——基于无限循环的嵌入式软件架构2916.9本章小结292习题6292第7章中断2937.1中断的基本概念2937.1.1中断源2947.1.2中断屏蔽2947.1.3中断处理过程2947.1.4中断优先级2967.1.5中断嵌套2977.1.6中断的利与弊2987.2STM32F103中断系统2987.2.1嵌套向量中断控制器NVIC2987.2.2STM32F103中断优先级2997.2.3STM32F103中断向量表3007.2.4STM32F103中断服务函数3037.2.5STM32F103中断设置过程3047.3STM32F103外部中断/事件控制器EXTI3067.3.1内部结构3077.3.2工作原理3087.3.3主要特性3097.4STM32F10x的NVIC相关库函数3097.4.1NVIC_PriorityGroupConfig3107.4.2NVIC_Init3107.4.3NVIC_DeInit3137.5STM32F10x的EXTI相关库函数3147.5.1EXTI_DeInit3147.5.2EXTI_Init3147.5.3EXTI_GetFlagStatus3167.5.4EXTI_ClearFlag3167.5.5EXTI_GetITStatus3177.5.6EXTI_ClearITPendingBit3177.6STM32F103的中断开发实例——按键控制LED亮灭3187.6.1功能要求3187.6.2硬件设计3187.6.3软件流程设计3197.6.4软件代码实现3207.6.5下载到硬件运行3237.6.6开发经验小结——前/后台嵌入式软件架构3237.7STM32F103的中断开发实例——精确延时的LED闪烁3257.7.1功能要求3257.7.2硬件设计3257.7.3软件流程设计3267.7.4软件代码实现3287.7.5软件代码分析——volatile3317.7.6软件模拟仿真3327.7.7下载到硬件运行3347.7.8开发经验小结——改进的前/后台嵌入式软件架构3347.8本章小结336习题7336第8章DMA3378.1DMA的基本概念3378.1.1DMA的引入3378.1.2DMA的定义3388.1.3DMA传输要素3388.1.4DMA传输过程3388.1.5DMA的特点与应用3398.2STM32F103的DMA工作原理3398.2.1功能框图3408.2.2触发通道3418.2.3优先级3448.2.4传输模式3448.2.5主要特性3448.3STM32F10x的DMA相关库函数3458.3.1DMA_DeInit3468.3.2DMA_Init3468.3.3DMA_GetCurrDataCounter3488.3.4DMA_Cmd3488.3.5DMA_GetFlagStatus3498.3.6DMA_ClearFlag3508.3.7DMA_ITConfig3518.3.8DMA_GetITStatus3518.3.9DMA_ClearITPendingBit3538.4STM32F103的DMA开发实例——存储器间的数据传输3538.4.1功能要求3538.4.2硬件设计3538.4.3软件流程设计3548.4.4软件代码实现3558.4.5软件代码分析——const3588.4.6下载硬件调试3588.4.7开发经验小结——使用DMA3658.5本章小结366习题8366第9章ADC3679.1ADC概述3679.1.1ADC的由来3679.1.2ADC的基本原理3689.1.3ADC的性能参数3709.1.4ADC的主要类型3719.2STM32F103的ADC工作原理3729.2.1主要特性3739.2.2内部结构3739.2.3ADC通道及分组3759.2.4ADC触发转换3769.2.5ADC时钟和转换时间3779.2.6ADC工作过程3789.2.7ADC中断和DMA请求3789.2.8独立模式和双ADC模式3809.2.9单次和连续转换模式3809.2.10扫描模式3819.2.11间断模式3839.2.12校准3849.3STM32F10x的ADC相关库函数3849.3.1ADC_DeInit3869.3.2ADC_Init3869.3.3ADC_RegularChannelConfig3889.3.4ADC_InjectedChannelConfig3909.3.5ADC_InjectedSequencerLengthConfig3909.3.6ADC_SetInjectedOffset3919.3.7ADC_TampSensorVrefintCmd3919.3.8ADC_Cmd3929.3.9ADC_ResetCalibration3929.3.10ADC_GetResetCalibrationStatus3929.3.11ADC_StartCalibration3939.3.12ADC_GetCalibrationStatus3939.3.13ADC_SoftwareStartConvCmd3949.3.14ADC_ExternalTrigConvCmd3949.3.15ADC_SoftwareStartInjectedConvCmd3959.3.16ADC_ExternalTrigInjectedConvCmd3959.3.17ADC_ExternalTrigInjectedConvConfig3969.3.18ADC_AutoInjectedConvCmd3979.3.19ADC_DiscModeCmd3979.3.20ADC_DiscModeChannelCountConfig3989.3.21ADC_InjectedDiscModeCmd3989.3.22ADC_GetConversionValue3989.3.23ADC_GetInjectedConversionValue3999.3.24ADC_GetFlagStatus3999.3.25ADC_ClearFlag4009.3.26ADC_ITConfig4009.3.27ADC_GetITStatus4019.3.28ADC_ClearITPendingBit4019.3.29ADC_DMACmd4029.4STM32F103的ADC开发实例——读取GPIO引脚电压4029.4.1功能要求4029.4.2硬件设计4029.4.3软件流程设计4039.4.4软件代码实现4069.4.5软件模拟仿真4099.4.6下载到硬件调试4139.4.7开发经验小结——使用软件滤波降低噪声4149.5STM32F103的ADC开发实例——读取芯片温度4149.5.1功能要求4149.5.2硬件设计4149.5.3软件流程设计4159.5.4软件代码实现4189.5.5下载到硬件调试4219.5.6开发经验小结——轮询、中断和DMA4229.6本章小结423习题9423第10章UART42510.1数据通信的基本概念42610.1.1并行和串行42610.1.2单工、半双工和全双工42610.1.3同步和异步42610.2UART通信原理42710.2.1UART的物理层42710.2.2UART的协议层43010.3STM32F103的USART工作原理43210.3.1主要特性43210.3.2内部结构43210.3.3USART中断43510.3.4使用DMA进行USART通信43610.4STM32F10x的USART相关库函数43710.4.1USART_DeInit43810.4.2USART_Init43810.4.3USART_Cmd43910.4.4USART_SendData44010.4.5USART_ReceiveData44010.4.6USART_GetFlagStatus44110.4.7USART_ClearFlag44110.4.8USART_ITConfig44210.4.9USART_GetITStatus44310.4.10USART_ClearITPendingBit44410.4.11USART_DMACmd44410.5STM32F103的USART开发实例——重定向printf44510.5.1功能要求44510.5.2硬件设计44510.5.3软件流程设计44610.5.4软件代码实现44710.5.5下载到硬件运行44910.5.6开发经验小结——使用printf重定向到USART145110.6STM32F103的USART开发实例——PC串口通信45210.6.1功能要求45210.6.2硬件设计45210.6.3软件流程设计45210.6.4软件代码实现45210.6.5下载到硬件运行45410.6.6开发经验小结——库函数开发STM32F103外设的一般原理45510.7本章小结459习题10459第11章SPI46111.1SPI通信原理46111.1.1SPI的物理层46211.1.2SPI的协议层46411.2STM32F103的SPI工作原理46911.2.1主要特性46911.2.2内部结构47011.2.3SPI主模式47111.2.4SPI从模式47211.2.5SPI状态标志和中断47311.2.6SPI发送数据和接收数据47411.2.7使用DMA进行SPI通信47511.3STM32F10x的SPI相关库函数47611.3.1SPI_I2S_DeInit47711.3.2SPI_Init47711.3.3SPI_Cmd47911.3.4SPI_I2S_SendData47911.3.5SPI_I2S_ReceiveData48011.3.6SPI_I2S_GetFlagStatus48011.3.7SPI_I2S_ClearFlag48111.3.8SPI_I2S_ITConfig48111.3.9SPI_I2S_GetITStatus48211.3.10SPI_I2S_ClearITPendingBit48311.3.11SPI_I2S_DMACmd48311.4STM32F103的SPI开发实例——读写SPI_FLASH48411.4.1功能要求48411.4.2硬件设计48411.4.3软件架构设计48511.4.4软件模块分析48611.4.5软件代码实现50711.4.6下载硬件调试51711.4.7下载到硬件运行52211.4.8开发经验小结——模块化开发的嵌入式软件设计52311.5本章小结524习题11524第12章I2C52612.1I2C通信原理52612.1.1I2C的物理层52712.1.2I2C的协议层52912.2STM32F103的I2C工作原理53312.2.1主要特性53412.2.2内部结构53412.2.3I2C从模式53512.2.4I2C主模式53712.2.5I2C中断54012.2.6使用DMA进行I2C通信54012.3STM32F10x的I2C相关库函数54212.3.1I2C_DeInit54312.3.2I2C_Init54312.3.3I2C_Cmd54512.3.4I2C_GenerateSTART54512.3.5I2C_ReadRegister54512.3.6I2C_Send7bitAddress54612.3.7I2C_SendData54612.3.8I2C_ReceiveData54712.3.9I2C_CheckEvent54712.3.10I2C_AcknowledgeConfig54812.3.11I2C_GenerateSTOP54812.3.12I2C_GetFlagStatus54912.3.13I2C_ClearFlag55012.3.14I2C_ITConfig55112.3.15I2C_GetITStatus55112.3.16I2C_ClearITPendingBit55212.3.17I2C_DMACmd55212.4STM32F103的I2C开发实例——读写I2C_EEPROM55312.4.1功能要求55312.4.2硬件设计55312.4.3软件架构设计55412.4.4软件模块分析55512.4.5软件代码实现56612.4.6下载到硬件调试57412.4.7下载到硬件运行57712.4.8开发经验小结——嵌入式驱动程序开发原理57812.5本章小结579习题12580附录AASCII码表581附录BSTM32F103微控制器大容量产品系列引脚定义表583附录CSTM32F103微控制器中等容量产品系列引脚定义表589附录DSTM32F103微控制器小容量产品系列引脚定义表594信息

封面

嵌入式系统原理及应用-基于ARM Cortex-M3内核的STM32F103系列微控制器

书名:嵌入式系统原理及应用-基于ARM Cortex-M3内核的STM32F103系列微控制器

作者:王益涵

页数:596

定价:¥89.0

出版社:清华大学出版社

出版日期:2016-10-01

ISBN:9787302441359

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

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

发表评论

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