前言
第1章概述
1?1计算机发展史1?1?1计算机的诞生1?1?2计算机的发展
1?2计算机的体系结构1?2?1冯·诺依曼架构模型1?2?2面向嵌入式应用的架构改进
1?3单片机发展史1?3?1计算机及早期单片机1?3?2单片机的发展趋势——走向集成、
嵌入式
1?4ARM、Cortex和STM32简介 1?4?1ARM系列内核1?4?2Cortex系列内核1?4?3STM32F103系列微控制器
1?5计算机发展的趋势和工程设计开发1?5?1计算机发展的趋势1?5?2嵌入式系统的工程设计和开发
1?6小结
习题
第2章Cortex?M3处理器
2?1Cortex?M3内核2?1?1内核体系结构2?1?2系统总线结构
2?2寄存器2?2?1通用寄存器2?2?2特殊功能寄存器
2?3存储器管理2?3?1寄存器空间分配2?3?2位带操作2?3?3互斥访问2?3?4端模式2?3?5存储保护单元2?3?6存储器访问属性2?3?7存储器的默认访问许可
2?4工作模式
2?5异常与中断2?5?1中断号与优先级2?5?2向量表2?5?3中断输入及挂起2?5?4Fault类异常2?5?5中断的具体行为2?5?6中断嵌套控制2?5?7高级中断操作2?5?8异常返回值
2?6堆栈2?6?1堆栈的基本操作2?6?2Cortex?M3堆栈操作2?6?3Cortex?M3的双堆栈机制
2?7小结
习题
第3章STM32最小系统的设计
3?1STM32F103最小系统的设计方案
3?2最小系统设计的要素3?2?1STM32晶体振荡器3?2?2复位电路3?2?3LED、Key及BOOT跳线3?2?4稳压电源及ISP下载口3?2?5I/O端口
3?3PCB图设计
3?4小结
第4章MDK?ARM软件入门
4?1MDK?ARM 4?70简介
4?2新建MDK工程4?2?1下载外设库4?2?2建立新工程4?2?3工程编译环境设置
4?3RVMDK使用技巧4?3?1文本美化4?3?2代码编辑技巧4?3?3其他小技巧
4?4调试与下载4?4?1 STM32软件仿真4?4?2STM32程序下载
4?5固件函数库函数命名规则
4?6小结
习题
目录第5章GPIO及外部中断的使用
5?1综述5?1?1通用I/O5?1?2单独的位设置或位清除5?1?3外部中断/唤醒线5?1?4复用功能5?1?5软件重新映射I/O复用功能5?1?6GPIO锁定机制5?1?7输入配置5?1?8输出配置5?1?9复用功能配置5?1?10模拟输入配置
5?2库函数5?2?1函数GPIO_Init5?2?2函数GPIO_SetBits5?2?3函数GPIO_ResetBits5?2?4函数GPIO_WriteBit5?2?5函数GPIO_Write5?2?6函数GPIO_ReadOutputDataBit5?2?7函数GPIO_ReadOutputData5?2?8函数GPIO_ReadInputDataBit5?2?9函数GPIO_ReadInputData
5?3I/O端口的外设映射5?3?1将OSC_32 IN/OSC_32 OUT作为
PC14/PC15端口5?3?2将OSC_IN/OSC_OUT作为
PD0/PD1端口5?3?3CAN复用功能重映射5?3?4JTAG/SWD复用功能重映射5?3?5ADC复用功能重映射5?3?6定时器复用功能重映射5?3?7USART复用功能重映射5?3?8I2C1复用功能重映射5?3?9SPI1复用功能重映射
5?4位运算5?4?1移位运算5?4?2按位与运算5?4?3按位或运算5?4?4取反运算5?4?5异或运算
5?5GPIO控制实例5?5?1实例1——控制LED闪烁5?5?2实例2——跑马灯5?5?3实例3——按键输入1
5?6外部中断和中断控制器5?6?1嵌套向量中断控制器5?6?2外部中断/事件控制器5?6?3NVIC库函数介绍5?6?4外部中断控制器库函数介绍5?6?5外部中断实例——按键输入2
5?7小结
习题
第6章定时器的使用
6?1STM32F的定时器简介6?1?1高级控制定时器TIM1的TIM86?1?2通用定时器TIMx6?1?3基本定时器TIM6和TIM7
6?2通用定时器功能描述6?2?1时基单元6?2?2计数器模式6?2?3时钟选择6?2?4捕获/比较通道6?2?5输入捕获模式6?2?6PWM输入模式6?2?7强置输出模式6?2?8输出比较模式6?2?9PWM模式6?2?10定时器和外部触发的同步6?2?11定时器同步
6?3定时器固件库函数介绍6?3?1函数TIM_DeInit6?3?2函数TIM_TimeBaseInit6?3?3函数TIM_OC1Init6?3?4函数TIM_OC2Init6?3?5函数TIM_OC3Init6?3?6函数TIM_OC4Init6?3?7函数TIM_ICInit6?3?8函数TIM_BDTRConfig6?3?9函数TIM_Cmd6?3?10函数TIM_CtrlPWMOutputs6?3?11函数TIM_ITConfig6?3?12函数TIM_SelectInputTrigger6?3?13函数TIM_EncoderInterfaceConfig6?3?14函数TIM_ARRPreloadConfig6?3?15函数TIM_CCPreloadControl6?3?16函数TIM_OC1PreloadConfig6?3?17函数TIM_OC2PreloadConfig6?3?18函数TIM_OC3PreloadConfig6?3?19函数TIM_OC4PreloadConfig6?3?20函数TIM_SelectOutputTrigger6?3?21函数TIM_SelectSlaveMode6?3?22函数TIM_SelectMasterSlaveMode6?3?23函数TIM SetCounter6?3?24函数TIM_SetAutoreload6?3?25函数TIM GetCounter6?3?26函数TIM_GetPrescaler6?3?27函数TIM_GetFlagStatus6?3?28函数TIM_ClearFlag6?3?29函数TIM_GetITStatus6?3?30函数TIM_ClearITPendingBit
6?4定时器实训6?4?1定时器控制跑马灯6?4?2PWM电动机控制
6?5小结
习题
第7章STM32的A/D转换模块
7?1ADC的主要技术指标及选型7?1?1ADC的主要技术指标分析7?1?2ADC的选型技巧及注意事项
7?2STM32的ADC7?2?1ADC功能描述7?2?2ADC寄存器描述7?2?3ADC中断
7?3STM32内部温度传感器7?3?1硬件设计7?3?2软件设计
7?4STM32的ADC实验7?4?1硬件设计7?4?2软件设计
7?5小结
习题
第8章STM32显示模块操作
8?1OLED显示8?1?1OLED的驱动方式8?1?2硬件设计8?1?3软件设计
8?2TFT LCD显示8?2?1TFT LCD的特点8?2?2硬件设计8?2?3软件设计
8?3图片显示实例8?3?1图片显示原理简介8?3?2硬件设计8?3?3软件设计
8?4汉字显示实例8?4?1汉字显示原理简介8?4?2硬件设计8?4?3软件设计
8?5小结
习题
第9章STM32外设接口模块
9?1USART模块9?1?1USART功能描述9?1?2USART寄存器简介9?1?3USART操作实例
9?2SPI模块9?2?1SPI简介9?2?2SPI功能描述9?2?3SPI配置简介9?2?4SPI操作实例
9?3I2C模块9?3?1I2C简介9?3?2I2C功能描述9?3?3I2C配置简介9?3?4I2C操作实例
9?4CAN总线模块9?4?1CAN简介9?4?2CAN功能描述9?4?3CAN配置简介9?4?4CAN操作实例
9?5USB模块9?5?1USB简介9?5?2USB功能描述9?5?3USB配置简介9?5?4USB操作实例
9?6小结
习题
第10章STM32综合实验
10?1STM32开发板10?1?1STM32开发板资源介绍10?1?2STM32开发板硬件设计
10?2追光系统10?2?1追光系统设计要求10?2?2追光系统软硬件设计10?2?3追光系统实现
10?3倒立摆10?3?1倒立摆设计要求10?3?2倒立摆软硬件设计10?3?3倒立摆的实现
10?4储能式光电寻迹车10?4?1储能式光电寻迹车设计要求10?4?2储能式光电寻迹车软硬件设计10?4?3储能式光电寻迹车的实现
10?5MP3播放器10?5?1MP3播放器设计要求10?5?2MP3播放器软硬件设计10?5?3MP3播放器的实现
10?6基于GPRS的电热水器控制系统10?6?1基于GPRS的电热水器控制系统
设计要求10?6?2基于GPRS的电热水器控制系统
软硬件设计10?6?3基于GPRS的电热水器控制系统
实现
10?7小结
习题
参考文献