logo资料库

野火ISO]零死角玩转stm32完整版.pdf

第1页 / 共729页
第2页 / 共729页
第3页 / 共729页
第4页 / 共729页
第5页 / 共729页
第6页 / 共729页
第7页 / 共729页
第8页 / 共729页
资料共729页,剩余部分请下载后查看
野火ISO/硬件介绍篇
1. 原理图与硬件图
1.1. 原理图
1.2. 硬件图
野火ISO/基础入门篇
1. 搭建开发环境
1.1. 安装JLINK驱动
1.2. 安装MDK
1.3. 和谐MDK
1.4. 1.4编译程序
1.5. 下载程序
1.5.1. JLINK下载
1.5.2. 串口下载
1.5.3. 串口下载与JLINK下载对比
2. 新建工程
2.1.1. 获取ST库源码
2.1.2. 开始新建工程
2.1.3. 硬件调试配置
3. 初识STM32库
3.1. STM32神器之库开发
3.1.1. 什么是STM32库?
3.1.2. 为什么采用库来开发?
3.2. STM32结构及库层次关系
3.2.1. CMSIS标准
3.2.2. 库目录、文件简介
 core_cm3.c文件
 system_stm32f10x.c文件
 stm32f10x.h文件
 启动文件
 STM32F10x_StdPeriph_Driver文件夹
 stm32f10x_it.c、 stm32f10x_conf.h文件
3.2.3. 库各文件间的关系
3.2.4. 使用库帮助文档
 常用官方资料
 初识库函数
4. GPIO-流水灯的前后今生
4.1. STM32的GPIO
4.2. STM32的地址映射
温故而知新——stm32f10x.h文件
外设基地址
总线基地址
寄存器组基地址
4.3. STM32库对寄存器的封装
4.4. STM32的时钟系统
4.4.1. 时钟树&时钟源
4.4.2. 高速外部时钟(HSE)
4.4.3. HCLK、FCLK、PCLK1、PCLK2
4.5. LED具体代码分析
4.5.1. 实验描述及工程文件清单
4.5.2. 配置工程环境
4.5.3. 编写用户文件
4.5.4. 初始化结构体——GPIO_InitTypeDef类型
4.5.5. 初始化库函数——GPIO_Init()
4.5.6. 开启外设时钟
 启动文件及SystemInit()函数分析
 开启外设时钟
4.5.7. 控制I/O输出高、低电平
4.5.8. led.h文件
4.5.9. main文件
4.5.10. 实验现象
4.6. GPIO_Init()函数的实现
4.6.1. 规范的位操作方法
4.6.2. GPIO_Init()实现代码分析
4.6.3. 再论开发方式
5. POLLING-按键
5.1. GPIO的8种工作模式
5.1.1. 四种输入模式
5.1.2. 四种输出模式
5.2. 按键实验分析
5.3按键代码分析
5.2.1. 实验描述及工程文件清单
5.2.2. 配置工程环境
5.2.3. main文件
5.2.4. GPIO初始化配置
5.2.5. 利用库的数据类型
5.2.6. 实现LED反转
5.2.7. 实验现象
6. 6、EXTI-按键
6.1. STM32的中断和异常
6.2. NVIC中断控制器
6.2.1. NVIC结构体成员
6.2.2. 抢占优先级和响应优先级
6.2.3. NVIC的优先级组
6.3. EXTI外部中断
6.4. 中断检测按键实验分析
6.4.1. 实验描述及工程文件清单
6.4.2. 配置工程环境
6.4.3. main文件
6.4.4. 配置外部中断
6.4.5. AFIO时钟
6.4.6. NVIC初始化配置
6.4.7. EXTI初始化配置
6.4.8. 编写中断服务函数
6.4.9. 实验现象
7. SysTick(系统定时器)
7.1. SysTick——操作系统的心跳
7.2. SysTick timer工作分析
7.3. SysTick精确延时实例精讲
7.3.1. 实验描述及工程文件清单
7.3.2. 配置工程环境
7.3.3. main文件
7.3.4. 配置并启动SysTick timer
 检查输入参数
 位指示宏及位屏蔽宏
 配置中断向量及重置STK_VAL寄存器
 配置SysTick timer时钟为AHB
 使能、关闭定时器
7.3.5. 定时时间的计算
7.3.6. 编写中断服务函数
7.3.7. 使用SysTick的测量时间的功能
7.3.8. 实验现象
8. 串口通信
8.1. 异步串口通讯协议
8.2. 直通线和交叉线
8.3. 串口工作过程分析
8.3.1. 波特率控制
8.3.2. 收发控制
8.3.3. 数据存储转移部分
8.4. 串口通讯实验分析
8.4.1. 实验描述及工程文件清单
8.4.2. 配置工程环境
8.4.3. main文件
8.4.4. USART初始化配置
 GPIO初始化
 USART初始化
8.4.5. printf()函数重定向
8.4.6. USART1_printf()函数
8.4.7. 实验现象
9. DMA—为CPU减负
9.1. DMA功能简介
9.2. DMA工作分析
9.3. DMA实例之串口通信
9.3.1. 实验描述及工程文件清单
9.3.2. 配置工程环境
9.3.3. main文件
9.3.4. DMA初始化
9.3.5. 使用DMA中断
9.3.6. 实验现象
10. ADC实验(DMA方式)
10.1. ADC简介
10.2. STM32的ADC主要技术指标
10.3. ADC工作过程分析
10.4. ADC采集数据实例(采用DMA模式)
10.4.1. 实验描述及工程文件清单
10.4.2. 配置工程环境
10.4.3. main文件
10.4.4. ADC初始化
 配置GPIO端口
 配置DMA
 配置ADC模式
 ADC转换时间配置
 ADC自校准
 volatile变量
10.4.5. 计算电压值
10.4.6. 实验现象
10.5. ADC1芯片内部温度检测实验
10.5.1. 实验描述及工程文件清单
10.5.2. 配置工程环境
10.5.3. main文件
10.5.4. ADC初始化
10.5.5. 实验现象
11. FSMC-液晶显示-英文
11.1. LCD控制器简介
11.1.1. ILI9341控制器结构
11.1.2. 像素点的数据格式
11.1.3. ILI9341的通讯时序
11.2. 用STM32驱动LCD
11.2.1. FSMC简介
11.2.2. 用FSMC模拟8080时序
11.3. 实验代码分析
11.3.1. 液晶清屏显示
11.3.2. 液晶显示英文
 什么是字模
 制作ASCII码字模
11.3.3. 液晶显示变量
12. I2C-EEPROM
12.1. I2C协议简介
12.1.1. 物理层
12.1.2. 协议层
12.2. STM32的I2C特性及架构
12.2.1. I2C接口特性
12.2.2. I2C架构
12.3. I2C接口读写EEPROM实验
12.3.1. 实验描述及工程文件清单
12.3.2. 配置工程环境
12.3.3. main文件
12.3.4. I2C接口初始化
 EEPROM的地址
 GPIO端口初始化
 I2C模式初始化
12.3.5. 对EEPROM的读写操作
 EEPROM的页写入时序
 I2C事件检测
 等待EEPROM内部写入完成
 EEPROM读取函数
12.3.6. 使用I2C读写EEPROM流程总结
12.3.7. 实验现象
13. SPI-FLASH
13.1. SPI协议简介
13.1.1. SPI信号线
13.1.2. SPI模式
13.2. STM32的SPI特性及架构
13.2.1. STM32的SPI特性
13.2.2. STM32的SPI架构分析
13.3. SPI接口读取FLASH实例分析
13.3.1. 实验描述及工程文件清单
13.3.2. 配置工程环境
13.3.3. main文件
13.3.4. SPI初始化
 GPIO端口初始化
 SPI模式初始化
13.3.5. 控制FLASH的命令
13.3.6. 读取厂商ID
13.3.7. 擦除FLASH内容
 扇区擦除
 写使能
 读FLASH状态
13.3.8. 向FLASH写入数据
13.3.9. 从FLASH读取数据
13.3.10. 小结
13.3.11. 实验现象
14. 定时器
14.1. 定时器功能简介
14.2. 定时器工作分析
14.2.1. 基本定时器
14.2.2. 通用定时器
 捕获/比较寄存器
 PWM输出过程分析
 测量PWM输入过程分析
 定时器的时钟源
14.2.3. 高级定时器
 死区控制
14.3. PWM输出实例分析
14.3.1. 实验描述及工程文件清单
14.3.2. 配置工程环境
14.3.3. main文件
14.3.4. 定时器初始化
 GPIO初始化
 时基初始化
 输出模式配置
14.3.5. 实验现象
15. 呼吸灯
16. RTC实时时钟
16.1. RTC实时时钟简介
16.2. RTC工作过程分析
16.2.1. RTC架构
16.2.2. UNIX时间戳
16.3. 利用RTC提供北京时间实验
16.3.1. 实验描述及工程文件清单
16.3.2. 配置工程环境
16.3.3. main文件
 实验代码执行流程
 时间管理结构体
16.3.4. 检查RTC
16.3.5. 初始化RTC
16.3.6. 输入当前UNIX时间戳
 配置流程
 获取时间
 计算UNIX时间戳
16.3.7. 输出时间到终端
16.3.8. 实验现象
17. 电源管理
18. CAN通信
18.1. CAN协议简介
18.1.1. 物理层
18.1.2. CAN的报文种类及结构
18.1.3. 报文的种类
18.1.4. 数据帧的结构
 仲裁段
 控制段
 数据段
 CRC段
 ACK段
 帧结束
18.1.5. 同步
 位时序分解
 同步过程分析
18.2. STM32的CAN特性及架构
18.2.1. CAN特性
18.2.2. CAN架构
18.3. 双CAN通信 实验分析
18.3.1. 实验描述及工程文件清单
18.3.2. 配置工程环境
18.3.3. main文件
 主机
 从机
18.3.4. 配置CAN接口
 GPIO初始化及其重映射功能
 NVIC配置
 CAN模式配置
 CAN过滤器配置
18.3.5. 打包报文
18.3.6. 发送报文
18.3.7. 接收报文、编写中断服务函数
18.3.8. 实验小结
18.3.9. 实验现象
野火ISO/项目提高篇
19. 1、SDIO-SD卡
19.1. 1.1 实验描述及工程文件清单
19.2. 1.2 SDIO简介
19.3. 1.3 SD协议
19.4. 1.4 代码分析
19.5. 1.5实验现象
20. 2、FATFS-文件系统
20.1. 什么是文件系统
20.2. FATFS文件系统简介
20.2.1. FATFS的目录结构
20.2.2. FATFS帮助文档
20.2.3. FATFS源码
20.3. 移植FATFS文件系统实验
20.3.1. 实验描述及工程文件清单
20.3.2. 配置工程环境
20.3.3. 为文件系统添加底层驱动
 初始化函数接口
 扇区读取函数
 扇区写入函数
 时间接口函数
20.3.4. 简体中文和长文件支持
20.3.5. main文件
 写入文件
 读取文件
20.3.6. 实验现象
21. 3、FSMC-液晶显示汉字/图片
21.1. 什么是字模?
21.2. 制作字模
28.1. BMP图片格式
28.1.1. BMP图片分析
 0~1字节
 3~14字节
 14~53字节
28.2. 显示中英文及 BMP图片实验
28.2.1. 实验描述及工程文件清单
28.2.2. 配置工程环境
28.2.3. main文件
28.2.4. 显示汉字
 查找字模
28.3. 实现SD卡BMP图像的读取与保存
 显示BMP图
 LCD截图功能
28.3.2. 实验现象
29. 4、液晶触摸
29.1. LCD控制器简介
29.1.1. ILI9341控制器结构
29.1.2. 像素点的数据格式
29.1.3. ILI9341的通讯时序
29.2. 用STM32驱动LCD
29.2.1. FSMC简介
29.2.2. 用FSMC模拟8080时序
29.3. 触摸屏感应原理
29.4. TSC2046触摸屏控制器
29.5. LCD触摸屏画板实验
29.5.1. 实验描述及工程文件清单
29.5.2. 配置工程环境
29.5.3. main文件
29.5.4. 初始化FSMC模式
 初始化液晶屏流程
 初始化FSMC模式
29.5.5. FSMC模拟8080读写参数、命令
 读写参数、命令
 计算地址
 给整个屏幕上色
29.5.6. 液晶屏画点函数
29.5.7. 触摸屏校正
29.5.8. 检测触点、画点
29.5.9. 实验现象
30. 5、摄像头-OV7725
30.1. 摄像头的分类
30.1.1. 数字摄像头跟模拟摄像头区别
30.1.2. CCD与CMOS的区别
30.2. OV7670介绍
30.2.1. OV7670功能框架
30.2.2. OV7670管脚封装
30.3. SCCB总线
30.3.1. SCCB接口定义
30.3.2. SCCB时序描述
30.4. 摄像头模块
30.4.1. 摄像头模块硬件介绍。
30.4.2. OV7670输出时序
30.4.3. FIFO时序
30.4.4. 摄像头的驱动原理
30.5. 摄像头驱动实验
30.5.1. 实验描述及工程文件清单
30.5.2. 配置工程环境
30.5.3. main文件
30.5.4. SCCB总线的软件实现
30.5.5. 初始化OV7670
30.5.6. 采集并显示图像
30.5.7. 实验现象
31. 6、I2S-MP3
32. 7、Usb-device
32.1. USB协议分析
32.1.1. 协议版本
32.1.2. USB电气特性
 USB接口
 USB线缆
 NRZI编码
32.1.3. USB通讯模型
 USB系统架构
 USB主机与设备
 USB端点
 USB传输类型
32.1.4. USB枚举
32.2. STM32的USB控制器
32.3. USB读取SD卡——模拟U盘实验
32.3.1. 实验描述及工程文件清单
32.3.2. 配置工程环境
32.3.3. USB固件库说明
32.3.4. main文件
32.3.5. 基本配置
 SDIO初始化
 USB时钟
 中断
32.3.6. USB初始化
32.3.7. 中断服务函数
32.3.8. BOT和SCSI协议
 BOT
 SCSI
 传输状态机
 代码实现
32.3.9. 实验现象
33. FM收音机
34. 2.4g无线传输
34.1. 9.1 实验描述及工程文件清单
34.2. 9.2 NRF24L01模块简介
34.3. 9.3 代码分析
34.4. 9.4 实验想象
35. 重力感应/三轴加速(MMA7455)
35.1. 10.1 实验描述及工程文件清单
35.2. 10.2 MMA7455简介
35.3. 10.3代码分析
35.4. 10.4实验现象
36. 以太网-Lwip
36.1. 互联网模型
36.2. 以太网
36.2.1. PHY层
 传输介质
 编码
 CSMA/CD冲突检测
36.2.2. MAC子层
 MAC的功能
 MAC数据包
36.2.3. 以太网控制器
 集成MAC控制器的MCU接入方案
 外接以太网控制器方案
36.3. MAC之上的网络层
36.3.1. 为什么在MAC之上还有分层?
36.3.2. 各网络层的功能
36.3.3. LwIP协议栈
 LwIP协议栈简介
 获取LwIP协议栈
36.4. ENC28J60+LwIP 以太网实验
36.4.1. 实验描述及工程文件清单
36.4.2. 配置工程环境
36.4.3. main文件
36.4.4. LwIP对底层数据结构的封装
 pbuf结构体
 netif结构体
36.4.5. 初始化协议栈
 netif_add()函数
36.4.6. LwIP对底层操作的封装
 ethernetif_init指针
 底层输出函数
 底层初始化函数
 ethernet_input指针
 底层输入函数
36.4.7. 轮询和计时
36.4.8. opt.h文件和debug
 裁剪和配置LwIP
 LwIP的debug功能
36.4.9. LwIP应用
 网络应用软件架构
 TCP网络应用
 LwIP的应用函数
36.4.10. 网页服务器
36.4.11. 实验现象
37. SRM
38. NANDFLASH
39. NORFLASH
40. 485通信
41. DHT11温湿度传感器
42. DS1302时钟实验
43. PS2接口
野火ISO系统进阶篇
44. UCOS
45. 前言
46. 1、官方源代码介绍
47. 2、重要文件代码详解
47.1. 2.1 os_cpu.h
47.1.1. 全局变量
47.1.2. 数据类型
47.1.3. 临界段
47.1.4. 栈生长方向
47.1.5. 任务切换宏
47.1.6. 函数原型
 开中断和关中断
 任务管理函数
47.2. 2.2 os_cpu_c.c
47.2.1. 钩子函数
47.2.2. 任务堆栈结构初始化函数
47.2.3. SysTick时钟初始化
47.3. 2.3 os_cpu_a.asm
47.3.1. 声明外部定义
47.3.2. 声明全局变量
47.3.3. 段
47.3.4. 向量中断控制器NVIC
47.3.5. 中断
47.3.6. 启动最高优先级任务
47.3.7. 任务切换
47.3.8. 中断退出处理
47.3.9. PendSV 中断服务
48. 3、uC/OS-II移植到STM32处理器的步骤
48.1. 3.1 打开LED工程模版
48.2. 3.2 搭建uC/OS-II工程文件结构
48.3. 3.3 配置uC/OS-II
48.3.1. os_cfg.h
 os_cfg.h配置表格
48.4. 3.4 修改os_cpu.h
48.5. 3.5 修改os_cpu_c.c
48.6. 3.6 修改 os_cpu_a.asm
48.7. 3.7 修改os_dbg.c
48.8. 3.8 修改startup_stm32f10x_hd.s
48.9. 3.9 编写includes.h
48.10. 3.10 编写BSP
48.10.1. BSP.C文件代码
48.10.2. BSP.h头文件
48.11. 3.11 编写stm32f10x_it.c
48.12. 3.12 创建任务
48.12.1. 编写app_cfg.h
48.12.2. 编写app.c
48.12.3. 编写app.h头文件
48.13. 3.13 main函数
49. 4、运行多任务
49.1. 4.1 修改app.c
49.2. 4.2 编写app.h
49.3. 4.3 编写app_cfg.h
49.4. 4.4 编写main.c
50. 5、升级到最新版本V2.90
50.1. 5.1 不得不说的那些话儿
50.2. 5.2 从V2.86升级到V2.90说明
50.2.1. V2.87更新日志
50.2.2. V2.88 更新日志
50.2.3. V2.89 更新日志
50.2.4. V2.90更新日志
50.3. 5.3 更新步骤
50.4. 5.4 更新其他工程
50.4.1. 更新 STM32+UCOS+LED多任务 的例子
51. 6、移植计算器
51.1. 6.1 处理外部中断
51.2. 6.2 移植步骤
51.2.1. 具体步骤
51.3. 6.3 增加通信功能——队列
第 1 页 共 729 页
野火 ISO/硬件介绍篇 第 2 页 共 729 页
1. 原理图与硬件图 1.1. 原理图 ISO 原理图分为两个 sheet,sheet1 为最小系统部分,sheet2 为板载资源 和一些接口。 STM32 入门,看原理图当如从最小系统开始看起。 Sheet1 里面最主要的是:供电电路、复位电路、晶振电路、启动模式、下 载电路。其中定位孔、mark 点、gpio 等我们也把放到了 sheet1。定位孔的直 径是 3mm。 第 3 页 共 729 页
第 4 页 共 729 页
1.2. 硬件图 第 5 页 共 729 页
第 6 页 共 729 页
野火 ISO/基础入门篇 第 7 页 共 729 页
1. 搭建开发环境 在拿到开发板之后,很多朋友都跃跃欲试,想自己烧写个程序到开发板 上,看看效果。下面我们将演示如何将光盘里面的程序烧写到 ISO(ISO 是野 火最新的 STM32 开发板的代号)上,但前提是我们的电脑上必须已经安装了 JLINK 驱动和 MDK 开发环境,没有安装的朋友请参考我们的教程。光盘上提供 的代码都是已经编译好的,直接下载即可,如果不行,请重新编译一次。 1.1. 安装 JLINK 驱动 在用 JLINK 下载和调试程序之前,我们需要在电脑上安装 JLINK 驱动,如 果电脑上已经安装 JLINK 驱动,则可跳过这一步。在光盘目录下:05-开发软件 \1-JLINK 驱动 点击 Setup_JLinkARM_V458c.exe 安装即可。 第 8 页 共 729 页
分享到:
收藏