跟工程师学嵌入式开发 基于STM32和μC/OS-III 作者:谭贵,易确,熊立宇
跟工程师学嵌入式开发 基于STM32和μC/OS-III 出版社:电子工业出版社
跟工程师学嵌入式开发 基于STM32和μC/OS-III 内容简介
本书选用的STM32芯片基于ARM Cortex-M3体系结构,根据基于MCU的嵌入式技术实际应用需求,合理地选择了多种常用的重要外设接口,如USART、SPI、I2C、FSCM、SDIO总线、以太网等,结合丰富的实例及工程源代码,由浅入深、系统全面地介绍嵌入式系统的底层工作原理。在此过程中,通过穿插多个综合示例的讲解,如命令行外壳程序Shell、eFat文件系统、Telnet远程控制、?C/OS-III实时操作系统的移植过程,无论是嵌入式的初学者,还是有一定开发经验的工程师都能从中获益,使读者既能系统全面地掌握嵌入式开发所需的软硬件知识,又能锻炼他们的综合开发能力,为将来从事嵌入式开发方面的工作奠定坚实的基础。
跟工程师学嵌入式开发 基于STM32和μC/OS-III 目录
前言
第1章 开发利器:STM32库和MDK KeiI
1.1 学习启航:闪烁的跑马灯
1.2 STM32库结构和CMSIS标准
1.3 工程开发环境设置
第2章 STM32体系结构
2.1 总线与通信接口
2.2 STM32功能框架
2.3 STM32存储器映射
2.4 STM32时钟结构
2.5 系统时钟树与地址空间映射的关系
第3章 STM32系统启动过程分析
3.1 CM3的复位序列
3.2 STM32启动代码分析
3.3 STM32系统时钟初始化
3.4 程序运行环境初始化函数__main()
第4章 通用GPIO操作
4.1 实验结果预览:LED跑马灯
4.2 GPIO基本知识
4.3 实验代码解析
4.4 创建工程
4.5 编译调试
第5章 外部中断EXTI操作
5.1 实验结果预览:LED跑马灯_中断控制
5.2 异常与中断
5.3 NVIC与中断控制
5.4 EXTI基本知识
5.5 实验代码解析
5.6 创建工程
5.7 编译调试
第6章 USART接口
6.1 实验结果预览
6.2 USART基本知识
6.3 STM32 USART结构
6.4 USART寄存器位功能定义
6.5 USART实验代码分析
6.6 创建工程
第7章 USART综合应用:命令行外壳程序Shell
7.1 实验结果预览
7.2 基于USART的I/O函数
7.3 可变参数输出函数xprintf()
7.4 Shell外壳
7.5 建立工程,编译和运行
第8章 I2C接口
8.1 实验结果预览:轮询写入/读出EEPROM数据
8.2 I2C总线协议
8.3 STM32 I2C模块
8.4 I2C EEPROM读写示例及分析
8.5 建立工程,编译及运行
第9章 DMA接口
9.1 实验结果预览
9.2 通用DMA的作用及特征
9.3 STM32 DMA基本知识
9.4 实验示例分析
9.5 建立工程,编译和执行
第10章 实时时钟RTC
10.1 实验结果预览
10.2 STM32 RTC模块
10.3 RTC实验设计与源码分析
10.4 建立工程,编译和执行
第11章 系统定时器SysTick
11.1 SysTick简述
11.2 SysTick工作过程
11.3 SysTick寄存器位功能定义
11.4 基于SysTick的延时函数代码分析
11.5 建立工程,编译和执行
第12章 SPI接口
12.1 实验现象预览:轮询写入/读出SPI Flash数据
12.2 SPI总线协议
12.3 STM32 SPI模块
12.4 W25Q128FV规格说明
12.5 程序入口与SPI初始化代码
12.6 SPI Flash测试代码分析
12.7 向Shell添加SPI测试指令spitest
12.8 建立工程,编译和执行
第13章 网络接口:以太网
13.1 网络体系结构简介
13.2 ENC28J60知识
13.3 uIP协议栈简介
13.4 uIP移植分析
第14章 综合示例:基于uIP的Telnet服务
14.1 实验现象预览
14.2 Telnet远程登录协议
14.3 Telnetd服务框架及实现
14.4 上层应用与uIP协议的接口:telnetd_appcall()
14.5 建立工程,编译和运行
第15章 SDIO总线协议与SD卡操作
15.1 SD卡简介
15.2 SD协议
15.3 STM32 SDIO控制器
15.4 工程入口及配置
15.5 SDIO初始化
15.6 SDIO卡测试代码分析
15.7 建立工程,编译和运行
第16章 移植文件系统FatFs
16.1 实验现象预览:基于Shell的文件系统命令
16.2 FatFs文件系统
16.3 移植FatFs文件系统
16.4 FatFs文件系统应用示例分析
16.5 建立工程,编译和运行
第17章 无线接入:Wi-Fi模块ESP8266应用
17.1 无线技术标准:IEEE 802.11
17.2 ESP-WROOM-02模组
17.3 ESP-WROOM-02指令集
17.4 封装ESP-WROOM-02的配置函数
17.5 建立工程,编译和运行
第18章 移植μC/OS-III操作系统
18.1 μC/OS-III基础
18.2 μC/OS-III任务基础
18.3 μC/OS-III的信号量
18.4 μC/OS-III的消息队列
18.5 μC/OS-III的事件标志组
18.6 信号量、消息队列和事件标志组综合示例
18.7 μC/OS-III移植
第19章 基于μC/OS-III的信息系统
19.1 系统功能描述
19.2 系统任务设计分析
19.3 工程源代码(文件)整合
19.4 建立工程,编译和运行
参考文献
跟工程师学嵌入式开发 基于STM32和μC/OS-III 精彩文摘
“工欲善其事,必先利其器”,对于干技术活的工程人员来说,对这句话有比一般人更深刻的理解。尤其是软件开发领域,可供使用的工具众多,选择一个好的开发平台,不但可以有效地管理工程文件、配置工程参数,而且可更快捷有效地发现并解决程序设计中出现的问题。
本章以一个简单有趣的外设实验为线索,为您讲解本书将要使用的“利器”—MDK Keil开发环境的使用方法,包括工程建立、源文件管理、编译配置等。同时通过这个实验,为读者首先建立一个开发流程的初步印像,为后续学习打下基础,并一步步地进入趣味无穷的嵌入式世界。
1.1 学习启航:闪烁的跑马灯
对于任何刚开始接触嵌入式技术的人来说,对学习对象的直观感受是十分重要的。所谓“第一印象决定了以后的交往”,在技术领域也有这种效应。换句话说,首先得要让他对所学的东西有初步的兴趣。本节内容的目的就是如此,通过对一个四向(上下左右)摇杠不同方向的按钮来控制4颗LED灯闪烁频率和方向。
1.1.1 实验结果呈现
实验操作:
● 步骤A:当将摇杠向上推时,4颗LED灯以顺时针方向间隔1 s依次闪烁。
● 步骤B:将摇杠向下推,4颗LED以逆时针方向间隔1 s闪烁。
● 步骤C:将摇杠向左推,加快LED的闪烁频率。
● 步骤D:将摇杠向右推,降低LED的闪烁频率。
1.1.2 实验分析
根据以上实验现象,电路输入有4个信号:即摇杠的4个方向(对应于如图1-1所示的JOY_DOWN、JOY_UP、OY_LEFT、JOY_RIGHT),输出反映在4颗LED灯(原理图中的LED1、LED2、LED3、LED4)的闪烁频率和轮转方向上。在这里我们不讨论该电路的设计,而是利用设计好的电路图,如何找出8个I/O信号所用到GPIO引脚,然后依据它们在数据手册上的定义,对相关的寄存器做出配置即可。
在编写代码之前,首先查看电路图明确以下几点。
(1)确定硬件的连接关系。摇杠的“上右下左”4个方向作为MCU的输入信号分别连接到PG15、PG13、PG11、PG14引脚;而4个LED灯分别与PF6、PF7、PF8、PF9相连。
说明:对于STM32F10x系列芯片,除了电源(VDD)、地(VSS)、时钟(OSC)三类引脚之外,其余的外部引脚被分组管理,将它们命名为GPIOx(x=A、B、C、D、E、F、G),其中每组下有0~15共16根引脚(P0~P15),如GPIOA.P1。
(2)查MCU(STM31F103ZET6)的数据手册(Datasheet),总结上述8个GPIO引脚的功能定义,如表1-1所示。
为了减小芯片面积(与功耗、价格密切相关),芯片设计时在保持功能不受影响的前提下都尽可能地减少引脚数量。这样每根引脚不可避免地具有复用(多重)功能,默认情况下都作为普通I/O引脚使用(表1-1中的Main function),但可以通过配置来启用它们的其他功能(关于如何配置,从第4章的外设实验开始会详细详解)。
本实验所用到的8根引脚中,除PG15外,其余的都有复用功能。但本实验是单点控制(即每根引脚对应外接一个外部元件)实验,不涉及复杂的协议(如I2C、SPI、USART等),因此使用表1-1所列GPIO引脚的默认功能:输入和输出。
(3)配置引脚。虽然是单点控制,但每个引脚也有“入”和“出”之分,得根据实验要求对这些引脚进行必要的配置,在这之后才可能按软件的逻辑去控制“信号从哪根引脚进入,又从哪根引脚出”。
问题的逻辑是这样的:CPU怎么知道有输入信号从摇扛那边过来呢?如果不知道,它就不可能去指挥4颗LED灯按实验的要求闪烁。
本文来自润情无声投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。