内容简介
书以“新工科”教育理念为指导,以产教融合为突破口,面向产业需求,全面重构课程内容,将产业界的最新技术引入教学。从科研、教学和工程实际应用出发,理论联系实际,全面系统地讲述了基于STM32CubeMX+Keil MDK和STM32Cube(STM32CubeMX和STM32CubeIDE)开发方式的嵌入式系统设计与应用实例。
全书共分12章,主要内容包括:绪论、Arm处理器体系架构、STM32嵌入式微控器、STM32CubeMX的应用、STM32CubeIDE开发平台、STM32通用输入输出接口、STM32中断系统、STM32定时器系统、STM32 通用同步异步收发器(USART)、STM32模数转换器(ADC)、STM32 DMA控制器和嵌入式实时操作系统FreeRTOS。全书内容丰富,体系先进,结构合理,理论与实践相结合,尤其注重工程应用技术。
目录
第1章绪论
1.1FreeRTOS系统概述
1.1.1FreeRTOS的特点
1.1.2FreeRTOS的商业许可
1.1.3选择FreeRTOS的理由
1.1.4FreeRTOS的发展历史
1.1.5FreeRTOS的功能
1.1.6FreeRTOS的一些概念和术语
1.2FreeRTOS的源码和官方手册获取
1.3FreeRTOS系统移植简介
1.4FreeRTOS的文件组成
1.5FreeRTOS的编码规则及配置和功能裁剪
1.6FreeRTOS的启动流程
第2章STM32嵌入式微控制器
2.1STM32F407ZGT6概述
2.1.1STM32F407的主要特性
2.1.2STM32F407的主要功能
2.2STM32F407ZGT6芯片内部结构
2.3STM32F407VGT6芯片引脚和功能
2.4STM32F407VGT6最小系统设计
2.5STM32通用输入输出GPIO
2.5.1STM32 GPIO接口概述
2.5.2STM32的GPIO功能
2.6STM32外部中断
2.6.1STM32F4中断系统
2.6.2STM32F4外部中断/事件控制器
2.7STM32串口USART
2.8STM32定时器
2.8.1STM32F4定时器概述
2.8.2STM32F4基本定时器
2.9STM32外设例程
第3章FreeRTOS任务管理
3.1任务管理概述
3.1.1多任务运行基本机制
3.1.2任务的状态
3.1.3任务的优先级
3.1.4空闲任务
3.1.5基础时钟与嘀嗒信号
3.2FreeRTOS的任务调度
3.2.1任务调度方法概述
3.2.2使用时间片的抢占式调度方法
3.3任务管理的应用场合
3.4任务管理相关函数
3.5FreeRTOS任务的设计要点
3.6FreeRTOS任务管理应用实例
第4章FreeRTOS软件定时器
4.1软件定时器概述
4.1.1软件定时器的特性
4.1.2软件定时器的相关配置
4.1.3定时器服务任务的优先级
4.2软件定时器应用场景
4.3软件定时器的精度
4.4软件定时器的运作机制
4.5软件定时器控制块
4.6软件定时器的相关函数
4.6.1软件定时器创建函数
4.6.2软件定时器启动函数
4.6.3软件定时器停止函数
4.6.4软件定时器任务
4.6.5软件定时器删除函数
4.7FreeRTOS软件定时器应用实例
第5章FreeRTOS任务间同步
5.1FreeRTOS信号量
5.1.1二值信号量
5.1.2计数信号量
5.1.3互斥信号量
5.1.4递归互斥量
5.1.5信号量应用场景
5.1.6二值信号量运作机制
5.1.7计数信号量运作机制
5.1.8信号量控制块
5.1.9相关函数
5.1.10FreeRTOS信号量应用实例
5.2FreeRTOS互斥量
5.2.1优先级翻转问题
5.2.2互斥量的工作原理
5.2.3互斥量应用场景
5.2.4互斥量的运作机制
5.2.5互斥量控制块
5.2.6互斥量函数接口
5.2.7FreeRTOS互斥量应用实例
5.3FreeRTOS事件组
5.3.1事件组的原理和功能
5.3.2事件组的应用场景
5.3.3事件组运作机制
5.3.4事件组控制块
5.3.5事件组相关函数
5.3.6FreeRTOS事件组应用实例
第6章FreeRTOS进程间通信与消息队列
6.1进程间通信
6.2队列的特点和基本操作
6.2.1队列的特点
6.2.2队列的基本操作
6.3消息队列的运作机制
6.4消息队列的阻塞机制
6.5消息队列的应用场景
6.5.1任务间的消息交换
6.5.2中断与任务间的消息传递
6.5.3日志系统和事件监控
6.6消息队列控制块
6.7消息队列操作相关函数
6.7.1消息队列创建函数
6.7.2消息队列静态创建函数
6.7.3消息队列删除函数
6.7.4向消息队列发送消息函数
6.7.5从消息队列读取消息函数
6.8FreeRTOS消息队列应用实例
第7章FreeRTOS内存管理
7.1内存管理的基本概念
7.2内存管理的应用场景
7.3内存管理方案
7.3.1heap_1.c
7.3.2heap_2.c
7.3.3heap_3.c
7.3.4heap_4.c
7.3.5heap_5.c
7.4FreeRTOS内存管理应用实例
第8章FreeRTOS中断管理
8.1FreeRTOS与中断
8.2中断的基本概念
8.3中断管理的运作机制
8.4中断管理的应用场景
8.5FreeRTOS中断管理机制
8.6任务与中断服务程序
8.6.1任务与中断服务程序的关系
8.6.2中断屏蔽和临界代码段
8.6.3在ISR中使用FreeRTOS API函数
8.6.4ISR设计原则
8.7FreeRTOS中断管理应用实例
第9章FreeRTOS在STM32上的移植实例
9.1STM32的GPIO输入输出应用硬件设计
9.1
前言/序言
随着嵌入式系统在各领域的广泛应用,实时操作系统(RTOS)的需求日益增加。FreeRTOS是一款开源的实时操作系统,专为资源受限的嵌入式系统设计。FreeRTOS由Richard Barry创建并维护,提供了强大的任务调度功能,包括优先级调度、时间片轮转和多任务同步机制,如信号量、队列、事件组和互斥锁等。FreeRTOS支持多种处理器架构,包括Arm CortexM、PIC、AVR等,具有高度的移植性。
FreeRTOS实时操作系统具备小巧高效的特点,典型内核大小仅有几千字节(KB),非常适合用于片上系统(SoC)和微控制器等。FreeRTOS还提供了可选的内存管理方案,以满足不同应用的需求。同时,其丰富的API和强大的扩展性,使开发者能够快速构建稳定高效的实时应用。此外,FreeRTOS拥有活跃的社区支持、丰富的文档和实例代码,极大地方便了开发和调试。FreeRTOS广泛应用于物联网设备、工业自动化、机器人和消费电子领域,为开发复杂嵌入式系统提供了强有力的支持。
本书的特点主要体现在以下几方面。
(1) 系统性和全面性: 本书从FreeRTOS的基本概念入手,逐步深入任务管理、软件定时器、任务间同步、进程间通信与消息队列、内存管理、中断管理以及内核移植等各方面,内容系统全面,覆盖了FreeRTOS的各个重要方面。
(2) 实用性和操作性: 书中不仅介绍了理论知识,还结合了大量的实际应用实例,帮助读者在实践中掌握FreeRTOS的使用方法。每章末尾的习题也有助于读者巩固所学知识。
(3) 针对性和专业性: 本书特别针对STM32嵌入式微控制器进行了详细介绍和实例讲解,适合从事STM32开发的工程师和开发人员阅读。
(4) 图文并茂: 书中配有大量的图表和示意图,帮助读者更直观地理解FreeRTOS的工作原理和操作流程。
(5) 循序渐进: 本书内容安排循序渐进,从基础知识到高级应用,逐步深入,适合不同层次的读者学习和参考。
(6) 实战案例: 书中结合了多个实战案例,详细讲解了FreeRTOS在实际项目中的应用,帮助读者将理论知识应用到实际开发中,提高系统开发效率和产品质量。
全书共分为9章,具体内容如下。
第1章讲述了FreeRTOS的特点、商业许可、发展历史及功能等基本概念,解释了选择FreeRTOS的理由,并介绍了FreeRTOS源码和官方手册的获取方法,以及系统移植、文件组成、编码规则及配置和功能裁剪等内容,最后讲解了FreeRTOS的启动流程。
第2章概述了STM32微控制器,介绍了产品线和选型,详细分析了STM32F407ZGT6的主要特性和功能,并解释其芯片内部结构、引脚功能和最小系统设计,同时还讨论了STM32的GPIO、外部中断EXTI、串口USART、定时器等外设及其工作原理。
第3章详细讲述了FreeRTOS的任务管理机制,包括多任务运行基本机制、任务状态、优先级、空闲任务、基础时钟与嘀嗒信号等,还介绍了任务调度方法、任务管理相关函数、任务设计要点以及任务管理的应用实例。
第4章讲述了软件定时器的特性、相关配置、服务任务的优先级以及应用场景,讨论了软件定时器的精度、运作机制、控制块及相关函数,并通过应用实例帮助读者理解软件定时器的使用方法。
第5章主要介绍了信号量和互斥量的原理、功能、运作机制、控制块及相关函数,包括二值信号量、计数信号量、互斥量信号量、递归互斥量等。此外,讨论了优先级翻转问题及其解决方法,通过应用实例展示了FreeRTOS在任务间同步中的具体应用。
第6章讲述了进程间通信的基本概念,详细讲解了消息队列的特点和操作,包括队列的创建、数据写入和读取方法,以及消息队列的运作机制、阻塞机制及应用场景。同时,还介绍了消息队列的控制块及相关函数,并通过实例说明其应用方法。
第7章讲述了内存管理的基本概念及应用场景,介绍了不同的内存管理方案,详细讲解了heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c等实现方式。同时,解释了内存池的工作机制和管理方式,通过实例展示了FreeRTOS内存管理的具体应用。
第8章详细讲述了FreeRTOS与中断的关系、中断的基本概念及相关名词,讨论了中断管理的运作机制和应用场景。重点讲解了任务与中断服务例程(ISR)的关系、中断屏蔽和临界代码段的设计原则,并介绍了在ISR中使用FreeRTOS API函数的方法,通过实例展示了中断管理的应用。
第9章主要讲述了FreeRTOS在STM32上的移植实例,涵盖从STM32 GPIO输入输出应用的硬件设计,到使用STM32CubeMX新建工程,通过Keil MDK和STM32CubeIDE实现工程,使用STM32CubeProgrammer下载固件,以及通过STM32CubeIDE进行调试的详细步骤,系统地展示了整个移植过程。<