《面向人工智能的嵌入式设计与开发》内容包括嵌入式介绍、GPIO端口基本使用、C语言编程基础、GPIO端口输入模式、串口通信、中断系统、Systick定时器、LCD液晶显示屏、触摸屏驱动、RTC实时时钟、温湿度传感器和实战项目。
《面向人工智能的嵌入式设计与开发》可供电气、自动化类专业本、专科课程教学和大学生创新实践使用和参考。
《面向人工智能的嵌入式设计与开发》课后资料可扫描二维码查看和下载,读者可自行购买相关材料进行制作。
ARM V7是Cortex-M3的组成硬件之一,它的主频运行速度为72MHz,不但可以使用 Thumb-2 指令集,还具备其他特殊的新性质。与 ARM7 TDMI进行对比,Cortex-M3具备性能更加强大、代码密度更高、位带操作、中断为可嵌套使用、成本小、功耗小等优势。STM32系列芯片由意法半导体公司(STMicroelectronics)生产,是当下非常热门的芯片。STM32系列产品基于超低功耗的ARM Cortex-M3处理器内核,采用意法半导体独有的两大节能技术,在所有产品中,大量的管脚、外设和软件都是可以共同使用的,兼容性强大,开发人员可以通过它的兼容性来极大地提高设计的灵活性。Cortex-M3核的处理器的特点就是用于低端的设备控制。与89C51相比,STM32具有13级的流水线指令处理能力,集成了许多外设,以寄存器的方式操作,大大提高了芯片执行速度,具有响应快的特点。内部的RAM、ROM的空间也比较大,可以下载和运行更多代码,还可以在小型系统中使用,有利于多任务操作。由此可见,STM32的前景非常好,这几年ST公司在中国大力推广它的产品,国内部分半导体厂商也在生产类似芯片,更能体现出STM32在未来几年中在电子行业里受重视的程度。另外,芯片的价格很低。
STM32具有以下独有优势。
1.超低价格。STM32最大的优势是,它拥有32位机的性能,但仅是8位机的价格。
2.很多外围设备。TIMER、RTC、FSMC、IIC、USB、SPI、IIS、SDIO、CAN、DAC、ADC、DMA等许多外设都可以连在STM32上,从这些外设可以看出,STM32的集成度很高。
3.芯片种类繁多。M3是STM32的一种内核,这种内核有F100、F101、F102、F103、F105、F107、F207、F217共8个系列,这8个系列又有上百种型号,而且还有不同的封装可供选择,如QFN、LQFP、BGA等。与此同时,M3芯片中还有功耗极低的STM32L和可以进行无线通信的STM32W。
4.性能实时性好。STM32中的所有管脚都可以当作中断输入,共有84个中断,因而有16级可编程优先级。
5.功耗控制极为优秀。STM32的每个外设都有独立控制开关的时钟,当功耗太高时,可以关闭不用的外设时钟,这样就能降低功耗。
6.开发成本低。STM32下载程序时只需要一个串口即可,无须花费大量金钱购买价格极高的仿真器,而且STM32可以使用SWD和JTAG两种调试口。当使用SWD实现仿真调试时,只需要两个IO口,极为方便。
本书由赵志桓著,同时得到了深圳信盈达科技有限公司牛乐乐总经理、济南信盈达电子技术有限公司袁魁总经理、何文宾工程师、邹竟飞工程师和山东农业工程学院廖希杰的大力支持,在此表示衷心的感谢。
由于时间仓促,书中难免有不足之处,恳请广大读者不吝批评指正。
著者
2019年10月
赵志桓,山东农业工程学院副教授,负责学校智能感知与控制系统课程群建设,教育部信盈达CDIO协同创新实践平台实验中心主任,山东材料学会常务理事,校工程创新社团指导老师。具有多年半导体项目研发经历。
第1章 嵌入式介绍 1
1.1 嵌入式概述 1
1.2 Cortex-M3芯片介绍 3
1.2.1 Cortex-M系列芯片分类 3
1.2.2 STM32F10x系列的命名规则 3
1.2.3 Cortex-M3芯片产品分类 4
1.2.4 STM32F103ZET6芯片内部资源 4
1.2.5 STM32F103ZET6内部结构 5
1.3 STM32F10x最小系统 6
1.4 嵌入式开发软件安装 7
1.4.1 编译软件安装 7
1.4.2 驱动程序安装 8
1.4.3 下载测试 9
课后资料 9
第2章 GPIO端口基本使用 10
2.1 STM32F10x芯片GPIO模块介绍 10
2.2 STM32F10x芯片GPIO端口功能介绍 11
2.2.1 STM32F10x芯片GPIO端口功能 11
2.2.2 STM32F10x芯片GPIO端口内部框图 11
2.2.3 STM32F10x芯片时钟使能 13
2.2.4 STM32F10x芯片GPIO端口相关库函数 14
2.3 GPIO模块程序软件设计(驱动LED) 18
思考 19
课后资料 19
第3章 C语言编程基础 20
3.1 C语言体系介绍 20
3.1.1 C语言主要特点 20
3.1.2 嵌入式C程序基本结构 22
3.1.3 C语言编程规范 22
3.2 嵌入式C语言基本数据类型 23
3.3 数据常量和数据变量 25
3.4 C语言运算符与表达式 26
3.4.1 运算符与表达式的概念 26
3.4.2 逻辑运算符 27
3.4.3 位运算符 28
3.4.4 运算符优先级 28
3.4.5 数据类型转换运算 28
3.5 函数 29
3.5.1 函数模型 30
3.5.2 实际参数 30
3.5.3 函数应用 30
3.5.4 函数和变量的作用范围 31
3.6 宏定义与模块化编程 32
3.6.1 宏定义 32
3.6.2 条件编译 32
3.6.3 模块化编程 33
3.7 模块化编程软件设计 34
思考 37
课后资料 37
第4章 GPIO端口输入模式 38
4.1 嵌入式C语言基本结构 38
4.1.1 顺序结构 38
4.1.2 选择结构 39
4.1.3 循环结构 41
4.1.4 转移语句 43
4.2 嵌入式单片机输入系统 44
4.2.1 单片机按键介绍 44
4.2.2 GPIO输入功能程序设计 45
4.2.3 按键扫描程序设计 46
思考 49
课后资料 49
第5章 串口通信 50
5.1 通用USART通信介绍 50
5.1.1 通信的概述 50
5.1.2 串行通信分类 51
5.1.3 串行通信数据的传输速度 52
5.1.4 串行通信工作方式 53
5.1.5 串口发送数据的格式 53
5.2 STM32F10x芯片USART模块介绍 53
5.2.1 STM32F10x芯片USART模块概述 53
5.2.2 STM32F10x芯片USART模块内部框图 54
5.2.3 STM32F10x芯片USART模块特征 56
5.3 STM32F10x外设管脚复用 57
5.4 STM32F10x芯片USART模块相关库函数 58
5.4.1 USART_Init函数 58
5.4.2 USART_Cmd函数 60
5.4.3 USART_ITConfig函数 60
5.4.4 USART_SendData函数 61
5.4.5 USART_ReceiveData函数 61
5.4.6 USART_GetFlagStatus函数 62
5.4.7 USART_ClearFlag函数 62
5.4.8 USART_GetITStatus函数 63
5.4.9 USART_ClearITPendingBit函数 63
5.5 USART模块程序软件设计 64
5.5.1 USART_1硬件设置 64
5.5.2 USART1模块软件设计 64
思考 68
课后资料 68
第6章 中断系统 69
6.1 中断介绍 69
6.1.1 中断和中断源的概念 69
6.1.2 中断执行过程 70
6.1.3 中断使用的意义 70
6.1.4 中断优先级和中断嵌套 71
6.2 STM32F10x中断系统介绍 71
6.2.1 NVIC控制器介绍 71
6.2.2 STM32F10x异常向量表 72
6.2.3 STM32F10x中断优先级设置 75
6.3 STM32F10x中断系统相关库函数 75
6.3.1 NVIC_Init函数 75
6.3.2 NVIC_PriorityGroupConfig函数 76
6.4 中断软件示例 77
6.4.1 中断服务函数编写原则 77
6.4.2 NVIC中断软件设计 77
思考 79
课后资料 79
第7章 SysTick定时器 80
7.1 SysTick定时器介绍 80
7.1.1 SysTick定时器概述 80
7.1.2 STM32F10x系列SysTick定时器概述 80
7.1.3 SysTick定时器初始值计算 81
7.2 SysTick定时器相关库函数 81
7.2.1 SysTick_CLKSourceConfig函数 82
7.2.2 SysTick_Config函数 82
7.2.3 SysTick定时器软件设计 82
课后资料 85
第8章 LCD液晶显示屏 86
8.1 LCD液晶显示屏介绍 86
8.1.1 单片机常见显示设备 86
8.1.2 LCD液晶显示屏显示系统 87
8.1.3 彩色LCD液晶显示屏参数 87
8.1.4 ZZH Cortex-M开发板LCD模块介绍 87
8.2 液晶显示控制器(ILI9486) 88
8.2.1 ILI9486控制器协议介绍 88
8.2.2 ILI9486控制器颜色设置 89
8.2.3 ILI9486控制器初始化 90
8.2.4 ILI9486控制器控制命令 90
8.3 LCD液晶显示屏字模软件应用 92
8.4 LCD液晶显示屏程序设计 95
课后资料 96
第9章 触摸屏驱动 97
9.1 触摸屏的工作原理和类型 97
9.2 触摸屏控制芯片XPT2046 98
9.2.1 触摸屏硬件连接 98
9.2.2 XPT2046控制器应用 98
9.3 触摸屏校准 103
9.3.1 触摸屏校准的目的和原理 103
9.3.2 触摸屏校准步骤 103
9.3.3 触摸屏软件设计 104
课后资料 105
第10章 RTC实时时钟 106
10.1 RTC实时时钟介绍 106
10.1.1 RTC实时时钟概念 106
10.1.2 RTC实时时钟时间基准 107
10.1.3 常用RTC外设芯片 107
10.2 STM32F10x芯片RTC模块介绍 107
10.2.1 STM32F10x芯片RTC模块概述 107
10.2.2 STM32F10x芯片备份存储器(BKP)介绍 108
10.2.3 STM32F10x芯片RTC模块内部框图 109
10.3 STM32F10x芯片RTC模块相关库函数 110
10.3.1 RTC_ITConfig函数 110
10.3.2 RTC_EnterConfigMod函数 110
10.3.3 RTC_ExitConfigMode函数 111
10.3.4 RTC_GetCounter函数 111
10.3.5 RTC_WaitForLastTask函数 111
10.3.6 RTC_SetCounter函数 111
10.3.7 RTC_SetPrescaler函数 112
10.3.8 RTC_ SetAlarm函数 112
10.3.9 RTC_WaitForSynchro函数 112
10.3.10 RTC_GetFlagStatus函数 112
10.3.11 RTC_ClearFlag函数 113
10.3.12 RTC_GetITStatus函数 113
10.3.13 RTC_ClearITPendingBit函数 113
10.3.14 BKP_ReadBackupRegister函数 114
10.3.15 BKP_WriteBackupRegister函数 114
10.3.16 PWR_BackupAccessCmd函数 114
10.3.17 RCC_LSEConfig函数 115
10.3.18 RCC_RTCCLKConfig函数 115
10.3.19 RCC_RTCCLKCmd函数 116
10.4 RTC软件设计 116
课后资料 123
第11章 温湿度传感器 124
11.1 DHT11产品介绍 124
11.1.1 DHT11概述 124
11.1.2 应用领域 124
11.1.3 传感器性能说明 125
11.1.4 测量分辨率 125
11.1.5 电气特性 125
11.2 模块接口说明 126
11.2.1 模块连接电路图 126
11.2.2 管脚说明 126
11.2.3 电源管脚 127
11.2.4 DHT11数据传输流程 127
11.2.5 主机复位信号和DHT11响应信号 127
11.2.6 DHT11数据表示方法 128
11.2.7 DHT11数据结构 129
11.3 DHT11软件设计 129
课后资料 133
参考文献 134
附录 136
附录A Cortex-M3开发板介绍 136
附录A.1 Cortex-M3开发板资源图 136
附录A.2 Cortex-M3开发板资源介绍 136
附录B C语言运算符优先级 139