新書推薦:
《
舍不得星星:全2册
》
售價:NT$
356.0
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:NT$
347.0
《
汗青堂丛书144·决战地中海
》
售價:NT$
765.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
《
知宋·宋代之科举
》
售價:NT$
454.0
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:NT$
454.0
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:NT$
505.0
|
內容簡介: |
本书面向高职和应用型本科的学生,以及嵌入式产品开发的工程技术人员。以通用的STM32开发板为平台,运行freeRTOS操作系统的智能手表作教学项目,贯穿书本内容的编写。全书共分12章,以智能手表项目为主线,系统介绍了嵌入式实时操作系统的概念,freeRTOS任务创建、任务调度、任务同步与消息传递,软件定时器、事件通知等知识。在每个知识点的学习上,均安排有智能手表对应的功能单元,来帮助读者理解知识点,并掌握其实际应用。项目引领,边学边做,学以致用是本书的一大特色。
|
關於作者: |
张超,男,硕士研究生,系统分析师,广东梅州人,1971年10月出生。超过20年企业工作经验,主持嵌入式产品的研制、开发三十多项。现任职于中山职业技术学院,主讲《C语言程序设计》、《MCS-51单片机技术》、《STM32单片机技术应用》、《嵌入式产品开发与实践》、《嵌入式实时操作系统》等课程。指导学生竞赛,获全国大学生电子设计大赛、全国职业院校技能大赛嵌入式应用开发赛项等奖励多项。
|
目錄:
|
第1章 嵌入式实时操作系统介绍11.1 嵌入式系统和嵌入式操作系统11.1.1 嵌入式系统的基本概念11.1.2 嵌入式操作系统21.1.3 实时操作系统21.1.4 嵌入式实时操作系统31.2 嵌入式实时操作系统FreeRTOS简介51.2.1 FreeRTOS的特点51.2.2 FreeRTOS的商业许可51.2.3 选择FreeRTOS的理由61.3 总结7思考与练习7第2章 FreeRTOS在STM32微控制器上的移植82.1 文件准备82.1.1 FreeRTOS源码92.1.2 基础工程122.2 FreeRTOS移植152.2.1 复制FreeRTOS源码152.2.2 向工程中添加.c文件162.2.3 配置头文件包含路径172.2.4 配置FreeRTOS172.2.5 修改stm32f4xx_it.c文件192.2.6 编译项目192.3 移植验证202.3.1 引入FreeRTOS相关头文件202.3.2 编写测试任务函数202.3.3 创建测试任务212.3.4 开启调度器212.3.5 下载测试222.4 添加串口打印功能222.4.1 串口硬件连接222.4.2 初始化串口232.4.3 下载测试242.5 总结25思考与练习25第3章 FreeRTOS的裁剪和配置263.1 基础配置263.1.1 configUSE_PREEMPTION273.1.2 configUSE_PORT_OPTIMISED_TASK_SELECTION273.1.3 configCPU_CLOCK_HZ273.1.4 configTICK_RATE_HZ273.1.5 configMAX_PRIORITIES273.1.6 configMINIMAL_STACK_SIZE273.1.7 configTOTAL_HEAP_SIZE283.1.8 configUSE_16_BIT_TICKS283.1.9 configIDLE_SHOULD_YIELD283.1.10 configMAX_TASK_NAME_LEN283.1.11 configUSE_TICKLESS_IDLE283.1.12 关于列队、信号量和任务通知293.1.13 关于钩子函数293.2 FreeRTOS中断配置293.2.1 configPRIO_BITS293.2.2 configLIBRARY_LOWEST_INTERRUPT_PRIORITY303.2.3 configKERNEL_INTERRUPT_PRIORITY303.2.4 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY303.2.5 configMAX_SYSCALL_INTERRUPT_PRIORITY303.3 可选API函数配置313.4 其他配置313.4.1 协程相关313.4.2 任务运行信息相关313.4.3 软件定时器相关323.4.4 断言323.4.5 中断服务函数333.5 FreeRTOSConfig.h头文件参考配置333.6 总结35思考与练习36第4章 FreeRTOS任务基础374.1 FreeRTOS任务374.1.1 任务的特性384.1.2 任务的状态394.1.3 任务的优先级394.1.4 任务堆栈404.1.5 任务控制块404.1.6 列表和列表项414.2 任务创建和删除444.2.1 任务函数454.2.2 任务创建和删除函数454.2.3 用动态内存分配方法创建任务464.2.4 用静态内存分配方法创建任务474.2.5 任务删除484.3 任务创建与删除示例494.3.1 组织代码494.3.2 编写LED0任务函数494.3.3 编写LED1任务函数504.3.4 创建任务514.3.5 修改main.c文件514.3.6 下载测试534.4 总结53思考与练习54第5章 FreeRTOS任务调度555.1 开启调度器555.1.1 调度器开启函数555.1.2 调度器开启过程575.1.3 启动个任务575.2 任务的挂起和恢复585.2.1 任务的挂起585.2.2 任务的恢复605.2.3 任务挂起和恢复示例625.3 任务的调度645.3.1 FreeRTOS任务切换场合655.3.2 PendSV中断665.3.3 PendSV中断服务函数675.3.4 查找下一个要运行的任务695.3.5 FreeRTOS时间片调度715.3.6 时间片调度示例725.3.7 空闲任务765.4 FreeRTOS内核函数785.4.1 临界段操作函数795.4.2 挂起和恢复调度器函数805.4.3 任务切换函数815.4.4 系统时钟节拍追加815.4.5 内核函数使用示例815.5 总结84思考与练习84第6章 FreeRTOS任务函数856.1 延时函数866.1.1 系统时钟节拍866.1.2 相对延时866.1.3 延时876.1.4 延时函数使用示例886.2 优先级控制916.2.1 获取任务优先级916.2.2 设置任务优先级916.2.3 改变任务优先级示例916.3 获取任务状态信息966.3.1 任务状态信息获取函数966.3.2 任务状态信息获取示例986.4 统计任务运行时间信息1016.4.1 任务运行时间信息统计函数1016.4.2 任务运行时间信息统计示例1016.5 总结106思考与练习107第7章 FreeRTOS队列与消息传递1087.1 FreeRTOS队列及其结构1087.1.1 FreeRTOS队列特性1087.1.2 队列结构体1107.2 队列操作1117.2.1 队列创建1117.2.2 入队操作1127.2.3 出队操作1147.2.4 其他队列操作函数1167.3 用队列实现串口守护任务1167.3.1 守护任务1167.3.2 串口守护任务示例1167.4 总结120思考与练习120第8章 FreeRTOS信号量与任务同步1218.1 二值信号量1218.1.1 创建二值信号量1228.1.2 释放二值信号量1238.1.3 获取二值信号量1248.1.4 用二值信号量进行任务同步1258.2 计数信号量1318.2.1 创建计数信号量1318.2.2 计数信号量的释放和获取1318.2.3 用计数信号量进行任务同步1318.3 互斥信号量1338.3.1 创建互斥信号量1358.3.2 互斥信号量的释放和获取1358.3.3 优先级翻转1368.3.4 优先级翻转示例1368.3.5 用互斥信号量抑制优先级翻转1408.4 递归互斥信号量1428.5 总结143思考与练习143第9章 FreeRTOS事件标志组1449.1 事件标志组1449.1.1 创建事件标志组1449.1.2 设置事件标志位1459.1.3 获取事件标志组值1469.1.4 等待指定的事件标志位1479.2 用事件标志组进行任务同步1479.2.1 配置FreeRTOS1489.2.2 配置定时器1489.2.3 任务函数1499.2.4 创建任务1519.2.5 下载测试1529.3 总结153思考与练习153第10章 FreeRTOS任务通知15410.1 发送和获取任务通知15410.1.1 发送任务通知15410.1.2 获取任务通知15610.2 任务通知使用15710.2.1 用任务通知模拟二值信号量15710.2.2 用任务通知模拟事件标志组16010.3 总结163思考与练习163第11章 FreeRTOS软件定时器16411.1 软件定时器服务任务16411.2 软件定时器操作16511.2.1 单次定时与周期定时16511.2.2 创建软件定时器16511.2.3 启动软件定时器16611.2.4 停止软件定时器16711.3 软件定时器使用示例16811.3.1 配置FreeRTOS16911.3.2 软件定时器回调函数17011.3.3 任务函数17011.3.4 创建软件定时器和任务17211.3.5 下载测试17311.4 总结174思考与练习174第12章 FreeRTOS内存管理17512.1 FreeRTOS内存分配方法17512.1.1 heap_1.c动态内存管理方法17512.1.2 heap_2.c动态内存管理方法17612.1.3 heap_3.c动态内存管理方法17612.1.4 heap_4.c动态内存管理方法17712.1.5 heap_5.c动态内存管理方法17712.2 FreeRTOS内存管理示例17712.3 总结180思考与练习180第13章 智能手表FreeRTOS实现18213.1 功能设计18213.1.1 时间显示18313.1.2 时间设置18413.1.3 闹钟设置18413.1.4 闹钟响铃18413.1.5 秒表计时18513.1.6 心率测量18513.1.7 运动计步18613.1.8 硬件信息18613.2 硬件设计18713.2.1 硬件系统框图18813.2.2 单元电路18813.2.3 硬件原理图19413.3 FreeRTOS工程19413.3.1 复制并新建FreeRTOS工程19413.3.2 智能手表FreeRTOS配置19613.3.3 用STM32CubeMX生成初始化代码19613.4 算法及驱动19913.4.1 OLED12864模块19913.4.2 AHT1020713.4.3 心率测量21013.4.4 运动计步21413.4.5 蓝牙传输22313.4.6 多功能按键22513.4.7 实时时钟22613.5 任务设计22713.5.1 按键任务22713.5.2 时间显示任务22813.5.3 时间设置任务22913.5.4 闹钟设置任务23113.5.5 闹钟时间检查任务23313.5.6 闹钟响铃任务23413.5.7 秒表计时任务23513.5.8 心率测量任务23713.5.9 计步后台任务23913.5.10 计步显示任务23913.5.11 任务信息获取任务24113.6 任务创建、调度与同步24313.6.1 任务创建及调度器开启24413.6.2 抢占式调度提高系统响应性能24713.6.3 时间片调度让任务共享优先级24713.6.4 用任务挂起和恢复实现互斥访问24713.6.5 用互斥信号量共享蓝牙资源24913.6.6 用任务通知同步闹钟响铃任务24913.6.7 用队列共享按键功能25013.6.8 软件定时器使用25013.7 调试与优化251附录A FreeRTOS编码和命名规则254附录B 示例程序和项目所使用的编译环境256附录C 项目实施对开发板的要求258附录D 项目实施所需驱动文件259参考文献260
|
|