STM32F103x微控制器与μC/OS-Ⅱ操作系统

STM32F103x微控制器与μC/OS-Ⅱ操作系统 pdf epub mobi txt 电子书 下载 2025

贾丹平,桂珺 编
图书标签:
  • STM32F103
  • μC/OS-II
  • 嵌入式系统
  • 单片机
  • 实时操作系统
  • ARM Cortex-M3
  • 嵌入式开发
  • C语言
  • 硬件编程
  • 嵌入式软件
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121303548
版次:1
商品编码:12024695
包装:平装
丛书名: 普通高等教育仪器类
开本:16开
出版时间:2017-01-01
用纸:胶版纸
页数:348
字数:557000
正文语种:中文

具体描述

内容简介

本书以引导读者快速全面掌握STM32F103x系列嵌入式微控制器为目的,由浅入深地带领读者走进嵌入式世界。本书共分为两部分:第一部分以嵌入式基本概念为平台,介绍嵌入式微控制器各模块的使用方法、库函数,从简单的单模块知识到复杂的多模块应用,涵盖Cortex-M3体系结构、开发平台、复位和时钟控制器、NVIC和EXTI模块、GPIO模块、FSMC模块、模数转换器模块、通用定时器模块、通信模块等常用功能模块。第二部分主要介绍μC/OS-Ⅱ操作系统的概念与应用,讲解μC/OS-Ⅱ操作系统的内核、常用的系统服务等知识。本书注重理论知识和实践能力的结合,推荐初学者使用库函数设计嵌入式程序以避免复杂的寄存器操作。

作者简介

    桂珺,男,沈阳工业大学教师,全国高等学校电子信息类专业教学指导委员会,协作委员。曾获得2009年全国大学生电子设计竞赛辽宁省优秀指导教师。

目录

目 录
第1章 嵌入式系统概述 (1)
1.1 嵌入式系统简介 (1)
1.1.1 嵌入式系统定义 (1)
1.1.2 嵌入式系统的特点 (2)
1.1.3 嵌入式系统的应用领域 (3)
1.2 嵌入式系统的组成 (4)
1.3 嵌入式处理器 (5)
1.3.1 嵌入式处理器的分类 (5)
1.3.2 嵌入式处理器的选型原则 (6)
1.4 嵌入式操作系统 (7)
1.5 ARM处理器简介 (10)
1.5.1 ARM处理器的进化过程 (10)
1.5.2 ARM处理器的开发工具 (12)
1.6 嵌入式系统的设计方法 (13)
1.6.1 嵌入式系统的总体结构 (13)
1.6.2 嵌入式系统设计过程 (14)
1.6.3 嵌入式系统的硬/软件协同设计技术 (15)
思考与练习 (16)
第2章 ARM Cortex-M3内部结构 (17)
2.1 Cortex-M3简介 (17)
2.2 指令集 (20)
2.3 流水线 (21)
2.4 寄存器组 (22)
2.5 操作模式和特权等级 (25)
2.6 异常、中断和向量表 (26)
2.7 存储器映射 (29)
2.8 调试支持 (30)
思考与练习 (30)
第3章 STM32F1系列微控制器简介 (31)
3.1 基于Cortex-M3内核的STM32F1微控制器概述 (31)
3.2 STM32F1微控制器的系统结构 (33)
3.3 STM32F1微控制器的存储器结构与映射 (34)
3.4 STM32F1微控制器的嵌入式闪存 (36)
3.5 STM32F1微控制器的启动配置 (37)
3.6 STM32F1微控制器的电源控制 (38)
3.7 STM32F1微控制器的复位 (39)
3.8 STM32F1微控制器的调试端口 (41)
思考与练习 (41)
第4章 建立MDK-ARM5.0开发平台 (42)
4.1 MDK-ARM简介 (42)
4.2 CMSIS标准简介 (44)
4.3 STM32标准外设库 (45)
4.4 安装MDK-ARM5.0 (49)
4.5 创建工程模板 (52)
思考与练习 (57)
第5章 复位与时钟控制器 (58)
5.1 STM32F103x微控制器时钟模块简介 (58)
5.1.1 HSE时钟 (60)
5.1.2 HSI时钟 (60)
5.1.3 PLL (61)
5.1.4 LSE时钟 (61)
5.1.5 LSI时钟 (61)
5.1.6 系统时钟的选择 (62)
5.1.7 时钟安全系统 (62)
5.1.8 RTC时钟 (62)
5.1.9 看门狗时钟 (62)
5.1.10 时钟输出 (62)
5.1.11 片上外设时钟 (63)
5.2 RCC库函数说明 (63)
5.2.1 库函数RCC_DeInit (65)
5.2.2 库函数RCC_HSEConfig (65)
5.2.3 库函数RCC_WaitForHSEStartUp (65)
5.2.4 库函数RCC_AdjustHSICalibrationValue (66)
5.2.5 库函数RCC_HSICmd (66)
5.2.6 库函数RCC_PLLConfig (66)
5.2.7 库函数RCC_PLLCmd (67)
5.2.8 库函数RCC_SYSCLKConfig (67)
5.2.9 库函数RCC_GetSYSCLKSource (68)
5.2.10 库函数RCC_HCLKConfig (68)
5.2.11 库函数RCC_PCLK1Config (69)
5.2.12 库函数RCC_PCLK2Config (69)
5.2.13 库函数RCC_ITConfig (70)
5.2.14 库函数RCC_USBCLKConfig (70)
5.2.15 库函数RCC_ADCCLKConfig (70)
5.2.16 库函数RCC_LSEConfig (71)
5.2.17 库函数RCC_LSICmd (71)
5.2.18 库函数RCC_RTCCLKConfig (72)
5.2.19 库函数RCC_RTCCLKCmd (72)
5.2.20 库函数RCC_GetClocksFreq (72)
5.2.21 库函数RCC_AHBPeriphClockCmd (73)
5.2.22 库函数RCC_APB2PeriphClockCmd (73)
5.2.23 库函数RCC_APB1PeriphClockCmd (74)
5.2.24 库函数RCC_APB2PeriphResetCmd (75)
5.2.25 库函数RCC_APB1PeriphResetCmd (75)
5.2.26 库函数RCC_BackupResetCmd (75)
5.2.27 库函数RCC_ClockSecuritySystemCmd (76)
5.2.28 库函数RCC_MCOConfig (76)
5.2.29 库函数RCC_GetFlagStatus (76)
5.2.30 库函数RCC_ClearFlag (77)
5.2.31 库函数RCC_GetITStatus (77)
5.2.32 库函数RCC_ClearITPendingBit (78)
5.3 使用RCC库函数建立系统时钟 (78)
5.3.1 建立系统时钟的一般流程 (78)
5.3.2 实例 (79)
思考与练习 (79)
第6章 I/O端口模块 (81)
6.1 概述 (81)
6.2 GPIO库函数说明 (83)
6.2.1 库函数GPIO_DeInit (84)
6.2.2 库函数GPIO_AFIODeInit (84)
6.2.3 库函数GPIO_Init (84)
6.2.4 库函数GPIO_StructInit (86)
6.2.5 库函数GPIO_ReadInputDataBit (86)
6.2.6 库函数GPIO_ReadInputData (87)
6.2.7 库函数GPIO_ReadOutputDataBit (87)
6.2.8 库函数GPIO_ReadOutputData (87)
6.2.9 库函数GPIO_SetBits (88)
6.2.10 库函数GPIO_ResetBits (88)
6.2.11 库函数GPIO_WriteBit (88)
6.2.12 库函数GPIO_Write (88)
6.2.13 库函数GPIO_PinLockConfig (89)
6.2.14 库函数GPIO_EventOutputConfig (89)
6.2.15 库函数GPIO_EventOutputCmd (90)
6.2.16 库函数GPIO_PinRemapConfig (90)
6.2.17 库函数GPIO_EXTILineConfig (91)
思考与练习 (91)

第7章 中断和事件 (92)
7.1 嵌套向量中断控制器 (92)
7.2 外部中断/事件控制器 (95)
7.3 NVIC库函数说明 (96)
7.3.1 库函数NVIC_PriorityGroupConfig (97)
7.3.2 库函数NVIC_Init (97)
7.3.3 库函数NVIC_SetVectorTable (99)
7.3.4 库函数NVIC_SystemLPConfig (100)
7.4 EXTI库函数说明 (100)
7.4.1 库函数EXTI_DeInit (101)
7.4.2 库函数EXTI_Init (101)
7.4.3 库函数EXTI_StructInit (102)
7.4.4 库函数EXTI_GenerateSWInterrupt (103)
7.4.5 库函数EXTI_GetFlagStatus (103)
7.4.6 库函数EXTI_ClearFlag (103)
7.4.7 库函数EXTI_GetITStatus (103)
7.4.8 库函数EXTI_ClearITPendingBit (104)
思考与练习 (104)
第8章 系统时基定时器 (105)
8.1 概述 (105)
8.2 SysTick库函数说明 (106)
思考与练习 (106)
第9章 实时时钟和备份寄存器 (107)
9.1 实时时钟简介 (107)
9.2 后备寄存器简介 (111)
9.3 RTC库函数说明 (112)
9.3.1 库函数RTC_ITConfig (112)
9.3.2 库函数RTC_EnterConfigMode (113)
9.3.3 库函数RTC_ExitConfigMode (113)
9.3.4 库函数RTC_GetCounter (113)
9.3.5 库函数RTC_SetCounter (113)
9.3.6 库函数RTC_SetPrescaler (114)
9.3.7 库函数RTC_SetAlarm (114)
9.3.8 库函数RTC_WaitForLastTask (114)
9.3.9 库函数RTC_WaitForSynchro (114)
9.3.10 库函数RTC_GetFlagStatus (115)
9.3.11 库函数RTC_ClearFlag (115)
9.3.12 库函数RTC_GetITStatus (115)
9.3.13 库函数RTC_ClearITPendingBit (116)
9.4 BKP库函数说明 (116)
9.4.1 库函数BKP_DeInit (116)
9.4.2 库函数BKP_Init (117)
9.4.3 库函数BKP_TamperPinCmd (117)
9.4.4 库函数BKP_ITConfig (117)
9.4.5 库函数BKP_RTCOutputConfig (117)
9.4.6 库函数BKP_SetRTCCalibrationValue (118)
9.4.7 库函数BKP_WriteBackupRegister (118)
9.4.8 库函数BKP_ReadBackupRegister (119)
9.4.9 库函数BKP_GetFlagStatus (119)
9.4.10 库函数BKP_ClearFlag (119)
9.4.11 库函数BKP_GetITStatus (119)
9.4.12 库函数BKP_ClearITPendingBit (120)
思考与练习 (120)
第10章 嵌入式闪存 (121)
10.1 嵌入式闪存简介 (121)
10.1.1 嵌入式闪存的组织方式 (121)
10.1.2 嵌入式闪存的读操作 (122)
10.1.3 嵌入式编程和擦除控制器 (123)
10.2 FLASH库函数说明 (128)
10.2.1 库函数FLASH_SetLatency (129)
10.2.2 库函数FLASH_HalfCycleAccessCmd (129)
10.2.3 库函数FLASH_PrefetchBufferCmd (130)
10.2.4 库函数FLASH_Unlock (130)
10.2.5 库函数FLASH_Lock (130)
10.2.6 库函数FLASH_ErasePage (130)
10.2.7 库函数FLASH_EraseAllPages (131)
10.2.8 库函数FLASH_EraseOptionBytes (131)
10.2.9 库函数FLASH_ProgramWord (131)
10.2.10 库函数FLASH_ProgramHalfWord (131)
10.2.11 库函数FLASH_ProgramOptionByteData (132)
10.2.12 库函数FLASH_EnableWriteProtection (132)
10.2.13 库函数FLASH_ReadOutProtection (133)
10.2.14 库函数FLASH_UserOptionByteConfig (133)
10.2.15 库函数FLASH_GetUserOptionByte (133)
10.2.16 库函数FLASH_GetWriteProtectionOptionByte (134)
10.2.17 库函数FLASH_GetReadOutProtectionStatus (134)
10.2.18 库函数FLASH_GetPrefetchBufferStatus (134)
10.2.19 库函数FLASH_ITConfig (134)
10.2.20 库函数FLASH_GetFlagStatus (135)
10.2.21 库函数FLASH_ClearFlag (135)
10.2.22 库函数FLASH_GetStatus (135)
10.2.23 库函数FLASH_WaitForLastOperation (136)
思考与练习 (136)
第11章 USART串口模块 (137)
11.1 USART串口简介 (137)
11.1.1 功能概述 (138)
11.1.2 发送器 (139)
11.1.3 接收器 (140)
11.1.4 产生分数比特率 (141)
11.1.5 多处理器通信 (142)
11.1.6 LIN模式 (143)
11.1.7 USART同步模式 (143)
11.1.8 单线半双工 (144)
11.1.9 智能卡模式 (145)
11.1.10 红外模式 (146)
11.1.11 USART的中断请求 (147)
11.2 USART库函数说明 (148)
11.2.1 库函数USART_DeInit (149)
11.2.2 库函数USART_Init (149)
11.2.3 库函数USART_StructInit (151)
11.2.4 库函数USART_Cmd (151)
11.2.5 库函数USART_ITConfig (151)
11.2.6 库函数USART_DMACmd (152)
11.2.7 库函数USART_SetAddress (152)
11.2.8 库函数USART_WakeUpConfig (152)
11.2.9 库函数USART_ReceiverWakeUpCmd (153)
11.2.10 库函数USART_LINBreakDetectiLengthConfig (153)
11.2.11 库函数USART_LINCmd (153)
11.2.12 库函数USART_SendData (154)
11.2.13 库函数USART_ReceiveData (154)
11.2.14 库函数USART_SendBreak (154)
11.2.15 库函数USART_SetGuardTime (154)
11.2.16 库函数USART_SetPrescaler (155)
11.2.17 库函数USART_SmartCardCmd (155)
11.2.18 库函数USART_SmartCardNackCmd (155)
11.2.19 库函数USART_HalfDuplexCmd (155)
11.2.20 库函数USART_IrDAConfig (156)
11.2.21 库函数USART_IrDACmd (156)
11.2.22 库函数USART_GetFlagStatus (156)
11.2.23 库函数USART_ClearFlag (157)
11.2.24 库函数USART_GetITStatus (157)
11.2.25 库函数USART_ClearITPendingBit (158)
思考与练习 (158)
第12章 SPI模块 (159)
12.1 SPI简介 (159)
12.1.1 引脚概述 (160)
12.1.2 数据传输模式 (161)
12.1.3 SPI从模式 (162)
12.1.4 SPI主模式 (163)
12.1.5 状态标志 (163)
12.1.6 利用DMA的SPI通信 (164)
12.1.7 SPI中断 (164)
12.2 SPI库函数说明 (164)
12.2.1 库函数SPI_DeInit (165)
12.2.2 库函数SPI_Init (165)
12.2.3 库函数SPI_StructInit (167)
12.2.4 库函数SPI_Cmd (167)
12.2.5 库函数SPI_I2S_ITConfig (168)
12.2.6 库函数SPI_I2S_DMACmd (168)
12.2.7 库函数SPI_I2S_SendData (168)
12.2.8 库函数SPI_I2S_ReceiveData (169)
12.2.9 库函数SPI_NSSInternalSoftwareConfig (169)
12.2.10 库函数SPI_SSOutputCmd (169)
12.2.11 库函数SPI_DataSizeConfig (170)
12.2.12 库函数SPI_TransmitCRC (170)
12.2.13 库函数SPI_CalculateCRC (170)
12.2.14 库函数SPI_GetCRC (170)
12.2.15 库函数SPI_GetCRCPolynomial (171)
12.2.16 库函数SPI_BiDirectionalLineConfig (171)
12.2.17 库函数SPI_I2S_GetFlagStatus (171)
12.2.18 库函数SPI_I2S_ClearFlag (172)
12.2.19 库函数SPI_I2S_GetITStatus (172)
12.2.20 库函数SPI_I2S_ClearITPendingBit (172)
思考与练习 (173)
第13章 I2C模块 (174)
13.1 I2C简介 (174)
13.1.1 功能描述 (175)
13.1.2 I2C从模式 (176)
13.1.3 I2C主模式 (177)
13.1.4 错误条件 (179)
13.1.5 SDA/SCL线控制 (180)
13.1.6 DMA请求 (180)
13.1.7 I2C的中断 (181)
13.2 I2C库函数说明 (182)
13.2.1 库函数I2C_DeInit (183)
13.2.2 库函数I2C_Init (183)
13.2.3 库函数I2C_StructInit (184)
13.2.4 库函数I2C_Cmd (185)
13.2.5 库函数I2C_ITConfig (185)
13.2.6 库函数I2C_DMACmd (186)
13.2.7 库函数I2C_SendData (186)
13.2.8 库函数I2C_ReceiveData (186)
13.2.9 库函数I2C_DMALastTransferCmd (186)
13.2.10 库函数I2C_GenerateSTART (187)
13.2.11 库函数I2C_GenerateSTOP (187)
13.2.12 库函数I2C_AcknowledgeConfig (187)
13.2.13 库函数I2C_OwnAddress2Config (187)
13.2.14 库函数I2C_DualAddressCmd (188)
13.2.15 库函数I2C_GeneralCallCmd (188)
13.2.16 库函数I2C_Send7bitAddress (188)
13.2.17 库函数I2C_ReadRegister (189)
13.2.18 库函数I2C_SoftwareResetCmd (189)
13.2.19 库函数I2C_SMBusAlertConfig (189)
13.2.20 库函数I2C_TransmitPEC (190)
13.2.21 库函数I2C_PECPositionConfig (190)
13.2.22 库函数I2C_CalculatePEC (190)
13.2.23 库函数I2C_GetPEC (190)
13.2.24 库函数I2C_ARPCmd (191)
13.2.25 库函数I2C_StretchClockCmd (191)
13.2.26 库函数I2C_FastModeDutyCycleConfig (191)
13.2.27 库函数I2C_GetLastEvent (191)
13.2.28 库函数I2C_CheckEvent (192)
13.2.29 库函数I2C_GetFlagStatus (192)
13.2.30 库函数I2C_ClearFlag (193)
13.2.31 库函数I2C_GetITStatus (193)
13.2.32 库函数I2C_ClearITPendingBit (194)
思考与练习 (194)
第14章 DMA控制器 (195)
14.1 DMA简介 (195)
14.2 DMA库函数说明 (199)
14.2.1 库函数DMA_DeInit (200)
14.2.2 库函数DMA_Init (200)
14.2.3 库函数DMA_StructInit (201)
14.2.4 库函数DMA_Cmd (202)
14.2.5 库函数DMA_ITConfig (202)
14.2.6 库函数DMA_GetCurrDataCounte (203)
14.2.7 库函数DMA_GetFlagStatus (203)
14.2.8 库函数DMA_ClearFlag (203)
14.2.9 库函数DMA_GetITStatus (203)
14.2.10 库函数DMA_ClearITPendingBit (204)
思考与练习 (204)
第15章 FSMC模块 (205)
15.1 FSMC简介 (205)
15.2 与非总线复用模式的异步16位NOR闪存接口 (207)
15.2.1 FSMC的配置 (207)
15.2.2 时序计算 (209)
15.2.3 硬件连接 (210)
15.2.4 从外部NOR闪存存储器执行代码 (211)
15.3 与非总线复用的16位SRAM接口 (211)
15.3.1 FSMC配置 (211)
15.3.2 时序计算 (212)
15.3.3 硬件连接 (213)
15.4 与8位的NAND闪存存储器接口 (213)
15.4.1 FSMC配置 (213)
15.4.2 时序计算 (215)
15.4.3 硬件连接 (217)
15.4.4 错误校验码计算 (217)
15.5 FSMC库函数说明 (218)
思考与练习 (219)
第16章 模数转换器模块 (220)
16.1 ADC简介 (220)
16.1.1 功能描述 (221)
16.1.2 自校准 (223)
16.1.3 可编程的采样时间 (224)
16.1.4 外部触发转换 (224)
16.1.5 双ADC模式 (225)
16.1.6 温度传感器 (226)
16.1.7 ADC的中断事件 (227)
16.2 ADC库函数说明 (227)
16.2.1 库函数ADC_DeInit (228)
16.2.2 库函数ADC_Init (228)
16.2.3 库函数ADC_StructInit (230)
16.2.4 库函数ADC_Cmd (231)
16.2.5 库函数ADC_ITConfig (231)
16.2.6 库函数ADC_DMACmd (231)
16.2.7 库函数ADC_ResetCalibration (232)
16.2.8 库函数ADC_GetResetCalibrationStatus (232)
16.2.9 库函数ADC_StartCalibration (232)
16.2.10 库函数ADC_GetCalibrationStatus (233)
16.2.11 库函数ADC_SoftwareStartConvCmd (233)
16.2.12 库函数ADC_GetSoftwareStartConvStatus (233)
16.2.13 库函数ADC_DiscModeChannelCountConfig (233)
16.2.14 库函数ADC_DiscModeCmd (234)
16.2.15 库函数ADC_RegularChannelConfig (234)
16.2.16 库函数ADC_ExternalTrigConvConfig (235)
16.2.17 库函数ADC_GetConversionValue (235)
16.2.18 库函数ADC_GetDuelModeConversionValue (235)
16.2.19 库函数ADC_AutoInjectedConvCmd (236)
16.2.20 库函数ADC_InjectedDiscModeCmd (236)
16.2.21 库函数ADC_ExternalTrigInjectedConvConfig (236)
16.2.22 库函数ADC_ExternalTrigInjectedConvCmd (237)
16.2.23 库函数ADC_SoftwareStartinjectedConvCmd (237)
16.2.24 库函数ADC_GetsoftwareStartinjectedConvStatus (237)
16.2.25 库函数ADC_InjectedChannleConfig (238)
16.2.26 库函数ADC_InjectedSequencerLengthConfig (238)
16.2.27 库函数ADC_SetInjectedOffset (238)
16.2.28 库函数ADC_GetInjectedConversionValue (239)
16.2.29 库函数ADC_AnalogWatchdogCmd (239)
16.2.30 库函数ADC_AnalogWatchdongThresholdsConfig (239)
16.2.31 库函数ADC_AnalogWatchdongSingleChannelConfig (240)
16.2.32 库函数ADC_TampSensorVrefintCmd (240)
16.2.33 库函数ADC_GetFlagStatus (240)
16.2.34 库函数ADC_ClearFlag (241)
16.2.35 库函数ADC_GetITStatus (241)
16.2.36 库函数ADC_ClearITPendingBit (241)
思考与练习 (241)
第17章 定时器模块 (243)
17.1 TIM简介 (243)
17.1.1 计数功能 (244)
17.1.2 时钟选择 (248)
17.1.3 捕获/比较通道 (250)
17.1.4 定时器同步 (261)
17.2 TIM库函数说明 (265)
17.2.1 库函数TIM_DeInit (268)
17.2.2 库函数TIM_TimeBaseInit (268)
17.2.3 库函数TIM_OC1Init (269)
17.2.4 库函数TIM_ICInit (270)
17.2.5 库函数TIM_BDTRConfig (271)
17.2.6 库函数TIM_TimeBaseStructInit (272)
17.2.7 库函数TIM_OCStructInit (273)
17.2.8 库函数TIM_ICStructInit (273)
17.2.9 库函数TIM_BDTRStructInit (274)
17.2.10 库函数TIM_Cmd (274)
17.2.11 库函数TIM_ITConfig (274)
17.2.12 库函数TIM_GenerateEvent (275)
17.2.13 库函数TIM_DMAConfig (275)
17.2.14 库函数TIM_DMACmd (276)
17.2.15 库函数TIM_InternalClockConfig (277)
17.2.16 库函数TIM_ITRxExternalClockConfig (277)
17.2.17 库函数TIM_TIxExternalClockConfig (278)
17.2.18 库函数TIM_ETRClockMode1Config (278)
17.2.19 库函数TIM_ETRClockMode2Config (279)
17.2.20 库函数TIM_ETRConfig (279)
17.2.21 库函数TIM_SelectInputTrigger (279)
17.2.22 库函数TIM_PrescalerConfig (280)
17.2.23 库函数TIM_CounterModeConfig (280)
17.2.24 库函数TIM_ForcedOC1Config (281)
17.2.25 库函数TIM_ARRPreloadConfig (281)
17.2.26 库函数TIM_SelectCOM (281)
17.2.27 库函数TIM_SelectCCDMA (281)
17.2.28 库函数TIM_CCPreloadControl (282)
17.2.29 库函数TIM_OC1PreloadConfig (282)
17.2.30 库函数TIM_OC1FastConfig (282)
17.2.31 库函数TIM_ClearOC1Ref (283)
17.2.32 库函数TIM_UpdateDisableConfig (283)
17.2.33 库函数TIM_EncoderInterfaceConfig (283)
17.2.34 库函数TIM_OC1PolarityConfig (284)
17.2.35 库函数TIM_OC1NPolarityConfig (284)
17.2.36 库函数TIM_CCxCmd (284)
17.2.37 库函数TIM_CCxNCmd (285)
17.2.38 库函数TIM_SelectOCxM (285)
17.2.39 库函数TIM_UpdateRequestConfig (285)
17.2.40 库函数TIM_SelectHallSensor (286)
17.2.41 库函数TIM_SelectOnePulseMode (286)
17.2.42 库函数TIM_SelectOutputTrigger (286)
17.2.43 库函数TIM_SelectSlaveMode (287)
17.2.44 库函数TIM_SelectMasterSlaveMode (288)
17.2.45 库函数TIM_SetAutoreload (288)
17.2.46 库函数TIM_SetCompare1 (288)
17.2.47 库函数TIM_SetIC1Prescaler (288)
17.2.48 库函数TIM_SetClockDivision (289)
17.2.49 库函数TIM_GetCapture1 (289)
17.2.50 库函数TIM_GetCounter (289)
17.2.51 库函数TIM_GetPrescaler (289)
17.2.52 库函数TIM_GetFlagStatus (290)
17.2.53 库函数TIM_ClearFlag (290)
17.2.54 库函数TIM_GetITStatus (291)
17.2.55 库函数TIM_ClearITPendingBit (291)
思考与练习 (291)
第18章 看门狗模块 (292)
18.1 独立看门狗简介 (292)
18.2 窗口看门狗简介 (293)
18.3 IWDG库函数说明 (295)
18.3.1 库函数IWDG_WriteAccessCmd (295)
18.3.2 库函数IWDG_SetPrescaler (296)
18.3.3 库函数IWDG_SetReload (296)
18.3.4 库函数IWDG_ReloadCounter (296)
18.3.5 库函数IWDG_Enable (296)
18.3.6 库函数IWDG_GetFlagStatus (297)
18.4 WWDG库函数说明 (297)
18.4.1 库函数WWDG_DeInit (297)
18.4.2 库函数WWDG_SetPrescaler (297)
18.4.3 库函数WWDG_SetWindowValue (298)
18.4.4 库函数WWDG_EnableIT (298)
18.4.5 库函数WWDG_SetCounter (298)
18.4.6 库函数WWDG_Enable (298)
思考与练习 (299)
第19章 μC/OS-Ⅱ操作系统概述 (300)
19.1 μC/OS-Ⅱ简介 (300)
19.2 实时系统概念 (300)
19.2.1 前后台系统 (301)
19.2.2 代码的临界段 (301)
19.2.3 任务 (301)
19.2.4 内核 (302)
19.2.5 调度 (303)
19.2.6 可重入型 (303)
19.2.7 不可剥夺型内核 (303)
19.2.8 可剥夺型内核 (303)
19.2.9 时间片轮番调度法 (304)
19.2.10 任务优先级 (304)
19.2.11 死锁 (304)
19.2.12 同步 (304)
19.2.13 任务间的通信 (305)
19.2.14 时钟节拍 (305)
19.2.15 临界段 (306)
19.3 内核结构 (306)
19.3.1 任务控制块 (306)
19.3.2 任务调度 (307)
19.3.3 给调度器上锁和开锁 (307)
19.3.4 空闲任务 (308)
19.3.5 统计任务 (308)
19.3.6 ?C/OS中的中断处理 (308)
19.3.7 时钟节拍 (309)
19.3.8 ?C/OS-Ⅱ初始化与启动 (309)
思考与练习 (309)
第20章 任务管理与通信 (310)
20.1 任务管理 (310)
20.1.1 建立任务 (311)
20.1.2 任务堆栈 (311)
20.1.3 删除任务 (311)
20.1.4 请求删除任务 (312)
20.1.5 改变任务的优先级 (312)
20.1.6 挂起任务 (313)
20.1.7 恢复任务 (313)
20.2 任务之间的通信 (313)
20.2.1 事件控制块 (313)
20.2.2 信号量 (315)
20.2.3 邮箱 (316)
20.2.4 消息队列 (318)
思考与练习 (320)
第21章 时间管理和内存管理 (321)
21.1 时间管理 (321)
21.1.1 任务延时函数 (321)
21.1.2 按时分秒延时函数 (322)
21.1.3 让处在延时期的任务结束延时 (322)
21.1.4 系统时间 (322)
21.2 内存管理 (323)
21.2.1 内存控制块 (323)
21.2.2 建立一个内存分区 (323)
21.2.3 分配一个内存块 (324)
21.2.4 释放一个内存块 (324)
21.2.5 查询一个内存分区的状态 (324)
21.2.6 等待一个内存块 (325)
思考与练习 (325)
参考文献 (326)

前言/序言

前 言

Cortex-M3是ARM公司2004年推出的基于ARM V7架构的新型微处理器内核,是市场上出现较早、功耗较低、普及程度较高的32位ARM处理器。Cortex-M3采用了新型的单线调试技术,拥有独立的指令总线和数据总线,并集成了必要的存储器和功能模块,降低了设计和应用的难度。STM32F103x系列嵌入式处理器是意法半导体有限公司(STMicroelectronics, ST) 推出的一款32位基于ARM Cortex-M3内核的嵌入式微控制器,主要针对控制领域中的实时应用领域,具有较强的控制功能和一定的数字信号处理能力,除可用于传统8051系列微控制器的应用领域外,还可用于DSP处理器的领域。

本书以引导读者快速全面掌握STM32系列嵌入式处理器为目的,由浅入深地带领读者走进嵌入式世界。全书共分为两部分:第一部分以嵌入式基本概念为平台,介绍嵌入式微控制器各模块的使用方法、例程,从简单的单模块知识到复杂的多模块应用。第二部分主要介绍μc/os-Ⅱ操作系统的概念与应用。各章节内容安排如下:

第1章 简要介绍嵌入式系统的概念、特点、分类、结构以及常见嵌入式操作系统和嵌入式系统的设计方法。通过本章的学习,可使读者初步建立起嵌入式系统开发的整体框架和知识体系。

第2章 介绍Cortex-M3处理器体系结构,包括Thumb-2指令集、流水线技术、操作模式、寄存器配置、存储器结构、异常与处理等内容,帮助读者初步了解Cortex-M3处理器的整体架构。

第3~4章 介绍STM32F1系列微控制器结构及软件开发平台,包括STM32F1系列微控制器的系统结构、嵌入式闪存、启动配置及功率管理等。还介绍了MDK-ARM5.0开发平台。帮助读者在了解STM32F1微控制器的基本参数、重要特性的基础上,掌握Keil集成开发环境的应用方法。

第5~18章 介绍STM32F103x嵌入式系统各功能模块的功能、特性、使用方法及相关库函数。包括复位与时钟控制RCC模块、通用输入输出接口(GPIO)模块、中断模块、通用定时器模块、USART串口模块、模数转换器模块、系统节拍定时器模块、Flash存储器模块、SPI模块、DMA模块和FSMC模块等,使读者了解STM32F103x嵌入式系统各功能模块的编程方法。

第19~21章 介绍μC/OS-Ⅱ嵌入式实时操作系统内核的相关知识。包括μC/OS-Ⅱ实时操作系统的基本概念和内核结构、μC/OS-Ⅱ任务管理、时间管理和内存管理的机制及μC/OS-Ⅱ的使用方法。

本书适用于STM32F103x嵌入式处理器的初学者,可作为高等院校仪器仪表、电子信息、自动控制等专业嵌入式系统课程的教材,也可作为从事嵌入式系统应用开发工程师的参考资料。

本书由贾丹平编写第1~4、14章,桂珺编写第5~10章,刘博编写第15~16、18~21章,赵柏山编写第11~13章,徐耀松编写第17章。全书由桂珺负责规划、内容安排,贾丹平负责审阅校订。本书在编写过程中参考和借鉴了大量相关资料及网络资源,在此谨对这些作者表示衷心的感谢。

由于编者水平和经验所限,加之时间仓促,书中难免有疏漏和不妥之处,恳请各位老师及同行批评指正,并请您将阅读中发现的错误发送到:qianrushijiaocai@163.com。



《STM32F103x微控制器嵌入式开发实战》 内容简介: 本书深入浅出地讲解了基于STM32F103x系列微控制器进行嵌入式系统开发的完整流程与核心技术。内容涵盖从基础的硬件原理、开发环境搭建,到STM32F103x系列微控制器的内部架构、外设接口的应用,再到嵌入式系统设计的关键技术,最终通过多个经典实际项目案例的实战演练,帮助读者全面掌握STM32F103x微控制器的开发能力,为构建功能强大、性能优越的嵌入式应用奠定坚实基础。 第一部分:STM32F103x微控制器基础 第一章:嵌入式系统与STM32F103x概述 1.1 嵌入式系统入门 什么是嵌入式系统?嵌入式系统的定义、特点(专用性、实时性、资源受限性、集成度高等)与应用领域(消费电子、工业控制、医疗设备、通信设备、汽车电子等)。 嵌入式系统的组成:硬件平台(微处理器/微控制器、存储器、输入/输出设备、电源等)与软件平台(操作系统/裸机、驱动程序、应用软件等)。 嵌入式开发的基本流程:需求分析、硬件选型、系统设计、软件开发、调试、测试、部署与维护。 嵌入式开发的主要挑战:资源限制、实时性要求、功耗管理、可靠性与安全性。 1.2 STM32F103x系列微控制器介绍 意法半导体(STMicroelectronics)及其STM32系列微控制器概览。 STM32F103x系列微控制器的定位与优势:高性能、低功耗、丰富的外设、广泛的应用前景。 STM32F103x系列的主要型号与特点:以STM32F103C8T6、STM32F103VET6等为例,介绍不同封装、不同FLASH/RAM容量的型号,以及它们的区别与选择依据。 STM32F103x核心特性:Cortex-M3内核(ARMv7-M架构)、工作频率、存储器(FLASH、SRAM)、时钟系统、电源管理、低功耗模式等。 第二章:STM32F103x开发环境搭建 2.1 硬件开发平台准备 STM32F103x开发板的选择与介绍:例如Nucleo板、Discovery板或第三方通用开发板,介绍它们的核心功能、引脚定义、接口资源等。 必备的开发工具: USB转串口适配器(如CH340、FT232):用于程序的下载和串口通信调试。 JTAG/SWD调试器:如ST-Link V2/V3、ULINK等,用于代码的下载、在线调试、断点设置、变量监视等。 电源适配器或USB供电。 导线、面包板、LED灯、电阻、按键等基本电子元器件。 2.2 软件开发环境(IDE)的安装与配置 主流STM32开发IDE介绍: Keil MDK-ARM: 详细介绍Keil MDK-ARM的安装步骤,包括下载、安装、注册(如适用),以及设置项目文件、编译选项、调试器配置(ST-Link/J-Link)等。 STM32CubeIDE: 介绍STM32CubeIDE的安装与使用,包括其集成开发环境、CubeMX配置工具、代码生成功能、调试器集成等。 IAR Embedded Workbench for ARM: 简要介绍IAR EW ARM的特点和基本配置。 STM32CubeMX配置工具的使用: CubeMX的功能概述:图形化配置MCU引脚、时钟、外设,生成初始化代码。 CubeMX的安装与启动。 创建新工程:选择目标MCU,进行引脚分配(GPIO、UART、SPI、I2C等)。 时钟配置:理解HSE、HSI、PLL等时钟源,配置主频、APB1/APB2时钟,生成时钟配置文件。 外设配置:配置ADC、DAC、Timers、USART、SPI、I2C、USB、RTC等外设的参数。 中间件配置(如FreeRTOS,虽然书中不包含,但提及CubeMX的扩展性)。 代码生成:生成C语言初始化代码,集成到IDE工程中。 2.3 编译、下载与调试 工程的创建与组织:新建工程、添加源文件、头文件目录的设置。 编写第一个"Hello, World!"程序(LED闪烁): 理解GPIO的输入输出模式配置。 编写延时函数。 使用IDE的编译功能生成可执行文件(.hex/.axf)。 使用调试器(ST-Link/J-Link)下载程序到STM32F103x。 设置断点、单步执行、查看变量值、观察寄存器状态进行调试。 串口调试:使用USART配置,通过串口发送调试信息,使用串口助手(如XCOM、SSCOM)接收。 第三章:STM32F103x内部核心架构与工作原理 3.1 Cortex-M3处理器内核 ARMv7-M架构简介。 Cortex-M3的特点:3级流水线、Thumb-2指令集、NVIC(嵌套向量中断控制器)、SysTick定时器、MPU(可选)。 寄存器:通用寄存器(R0-R15)、特殊功能寄存器(SP, LR, PC, PSR)、特殊寄存器(PRIMASK, FAULTMASK, BASEPRI, CONTROL)。 异常与中断:中断向量表、中断优先级、中断处理流程、中断嵌套。 内存模型:内存映射、外设寄存器地址空间。 3.2 STM32F103x存储器结构 FLASH存储器:程序存储、数据存储、擦除/写入操作、数据手册中的相关说明(如页擦除、扇区擦除)。 SRAM(静态随机存取存储器):用于存储变量、堆栈、运行时数据,速度快,断电丢失。 EEPROM(外部/内部):STM32F103x通常不内置EEPROM,但可以通过FLASH模拟或者使用外部EEPROM。 3.3 时钟系统(RCC) 时钟源:HSI(内部高速振荡器)、HSE(外部高速振荡器)、LSI(内部低速振荡器)、LSE(外部低速振荡器)。 PLL(锁相环倍频器):功能与配置,如何生成System Clock。 系统时钟树:AHB、APB1、APB2总线时钟的划分与配置,以及外设时钟使能。 SysTick定时器:作为Cortex-M3内核的标准定时器,用于系统节拍、RTOS时基等,与RCC的关系。 3.4 电源管理(PWR) 电源模式:运行模式、睡眠模式、停止模式、待机模式。 低功耗特性:降低工作频率、关闭不使用的外设、进入低功耗模式。 电源域:VCC、VDDA、VBAT等。 3.5 复位与时钟控制(RCC) 复位源:上电复位(POR)、可控复位(POR/PDR)、窗口看门狗复位(WWDG)、独立看门狗复位(IWDG)、软件复位、外部复位(NRST引脚)。 复位状态寄存器。 第二部分:STM32F103x核心外设应用 第四章:通用输入/输出(GPIO)接口 4.1 GPIO口工作模式 输入模式:浮空输入、上拉输入、下拉输入。 输出模式:推挽输出、开漏输出。 复用功能模式:配置GPIO口用于ADC、USART、SPI、I2C等其他外设。 模拟模式。 4.2 GPIO寄存器详解 端口配置寄存器(CRL/CRH):控制模式、速度。 端口输入数据寄存器(IDR):读取GPIO输入电平。 端口输出数据寄存器(ODR):写入GPIO输出电平。 端口位设置/清除寄存器(BSRR):高效设置/清除GPIO口状态。 端口锁定寄存器(LCKR):锁定GPIO配置。 4.3 GPIO应用实例 LED灯的控制:点亮、熄灭、闪烁。 按键的输入与消抖:硬件消抖(上拉/下拉电阻)、软件消抖(延时判断、状态机)。 GPIO中断:配置外部中断,实现按键触发中断。 GPIO复用功能配置:例如,配置PA9/PA10为USART1的TX/RX。 第五章:中断系统(NVIC)与SysTick定时器 5.1 中断向量表与中断向量 中断向量表的结构与作用。 STM32F103x的异常与中断类型:外部中断、定时器中断、通信接口中断等。 中断向量号的含义。 5.2 嵌套向量中断控制器(NVIC) NVIC的基本原理:优先级、分组、抢占。 NVIC寄存器:中断使能寄存器(ISERx)、中断禁用寄存器(ICERx)、中断挂起寄存器(ISPRx)、中断清除挂起寄存器(ICPRx)、中断优先级寄存器(IPRx)。 中断分组配置:设置中断优先级分组。 中断使能、禁用、挂起、清除挂起的操作。 5.3 外部中断(EXTI) EXTI控制器介绍:与GPIO口相连,触发中断。 EXTI配置:使能EXTI线,配置触发方式(上升沿、下降沿、边沿触发),配置中断分组。 EXTI挂起清除:中断服务函数中必须清除EXTI挂起标志位。 5.4 SysTick定时器 SysTick定时器的工作原理:24位递减计数器,可配置重载值。 SysTick配置:加载重载值,选择时钟源,使能中断。 SysTick中断服务函数:通常用于实现系统时基,为RTOS提供心跳。 使用SysTick实现精确延时。 第六章:通用同步/异步串行通信(USART) 6.1 USART基本原理 同步与异步通信的区别。 USART的通信协议:波特率、数据位、停止位、校验位。 发送与接收流程:发送数据帧、接收数据帧。 6.2 STM32F103x USART外设 USART的硬件结构:发送移位寄存器、接收移位寄存器、波特率发生器、中断控制。 USART的常用模式:全双工、半双工。 USART寄存器: 数据寄存器(DR):发送/接收数据。 状态寄存器(SR):标志位(TXE, RXNE, TC, PE, FE, NE, ORE)。 控制寄存器1(CR1):使能发送/接收、使能中断。 控制寄存器2(CR2):停止位设置、时钟使能。 控制寄存器3(CR3):LIN、SWAP、HDSEL、IRLP、IRCCR。 波特率生成器寄存器(BRR)。 6.3 USART配置与应用 波特率计算。 发送和接收数据:查询方式、中断方式。 串口通信实例: STM32与PC通过串口助手进行通信(发送字符串、接收命令)。 STM32之间通过串口进行通信。 STM32与蓝牙模块/GPS模块等通过串口通信。 6.4 其他串行通信接口(UART) STM32F103x的其他UART接口(如UART4, UART5)。 第七章:串行外设接口(SPI) 7.1 SPI协议与原理 SPI总线特点:全双工、同步、主从模式。 SPI信号线:MOSI(主设备输出/从设备输入)、MISO(主设备输入/从设备输出)、SCK(时钟)、NSS(片选)。 SPI传输模式:CPOL(时钟极性)、CPHA(时钟相位)。 SPI数据传输流程。 7.2 STM32F103x SPI外设 SPI控制器的硬件结构。 SPI主模式与从模式配置。 SPI寄存器: SPI控制寄存器1(CR1):配置模式、波特率、CPOL/CPHA等。 SPI控制寄存器2(CR2):配置SS信号、中断使能。 SPI状态寄存器(SR):标志位(TXE, RXNE, BSY)。 SPI数据寄存器(DR):发送/接收数据。 7.3 SPI应用实例 SPI与外部FLASH存储器通信:读写FLASH数据。 SPI与SD卡通信:读写SD卡文件。 SPI与OLED/LCD显示屏通信。 SPI与传感器通信(如ADXL345加速度计)。 STM32之间通过SPI进行通信。 第八章:集成电路通信总线(I2C) 8.1 I2C协议与原理 I2C总线特点:半双工、多主多从、总线通信。 I2C信号线:SDA(数据线)、SCL(时钟线)。 I2C通信流程:起始条件、设备地址发送、读写操作、应答(ACK/NACK)、停止条件。 7位和10位设备地址。 8.2 STM32F103x I2C外设 I2C控制器的硬件结构。 I2C主模式与从模式配置。 I2C寄存器: I2C控制寄存器1(CR1):软件复位、使能/禁用I2C。 I2C控制寄存器2(CR2):地址长度、发送/接收数据计数、DMA使能。 I2C自己的地址寄存器(OAR1, OAR2)。 I2C从模式地址寄存器(DR)。 I2C传输数据寄存器(DR)。 I2C状态寄存器1(SR1):标志位(SB, ADDR, TXE, RXNE, BTF, ACKERR)。 I2C状态寄存器2(SR2)。 I2C时序控制寄存器(CCR)。 I2C TRISE寄存器。 8.3 I2C应用实例 I2C与EEPROM存储器通信:读写数据。 I2C与各种传感器通信:如温度传感器(LM75)、湿度传感器(DHT11/22,虽然DHT11/22常用单总线,但也有I2C接口的版本)、光照传感器(BH1750)、陀螺仪/加速度计(MPU6050)。 I2C与实时时钟(RTC)模块通信(如DS1307)。 I2C与LCD显示屏通信。 第九章:定时器(Timer)与脉冲宽度调制(PWM) 9.1 通用定时器(TIM) 定时器的工作原理:计数器、预分频器、自动重载寄存器。 定时器模式:向上计数、向下计数、中心对齐计数。 定时器时钟源:内部时钟、外部时钟。 定时器输出:捕获/比较通道、输出PWM信号。 定时器输入:输入捕获、编码器接口。 STM32F103x的通用定时器(TIM2-TIM7, TIM15-TIM17)。 9.2 定时器寄存器详解 计数器寄存器(CNT)。 预分频器寄存器(PSC)。 自动重载寄存器(ARR)。 捕获/比较寄存器(CCR1-CCR4)。 控制寄存器1(CR1):计数模式、方向、时钟选择。 DMA/中断使能寄存器(DIER)。 状态寄存器(SR):溢出/更新中断标志(UIF)、捕获/比较中断标志(CCxIF)。 9.3 PWM(脉冲宽度调制) PWM原理:通过改变脉冲宽度来模拟模拟信号,用于电机调速、LED亮度控制等。 在STM32F103x上生成PWM信号:配置定时器工作在PWM模式,设置ARR作为周期,CCR作为占空比。 PWM输出配置:输出通道模式(PWM模式1, PWM模式2)。 PWM应用实例: LED呼吸灯效果。 直流电机调速。 舵机控制。 9.4 PWM输入捕获 PWM输入捕获原理:测量输入脉冲的宽度和周期。 应用:测量频率、测量占空比。 9.5 输入捕获 输入捕获原理:记录定时器计数值,测量外部信号的脉冲宽度。 应用:测量脉冲宽度、频率。 第十章:模数转换(ADC)与数模转换(DAC) 10.1 ADC(模数转换器) ADC基本原理:将模拟电压信号转换为数字信号。 STM32F103x的ADC特点:12位分辨率、多达18个通道、DMA支持、多通道扫描模式、单次转换/连续转换。 ADC寄存器: ADC控制寄存器1(CR1):分辨率、扫描模式、中断使能。 ADC控制寄存器2(CR2):ADC使能/禁用、转换模式、DMA使能、触发源。 ADC采样时间配置寄存器(SMPRx)。 ADC通道数配置寄存器(SQRx)。 ADC数据寄存器(DR):存储转换结果。 ADC通用寄存器(CDR):存储多通道扫描结果。 ADC校准:提高转换精度。 ADC应用实例: 读取电位器模拟量,控制LED亮度。 测量电池电压。 采集温度传感器模拟信号。 与模拟滤波器结合使用。 10.2 DAC(数模转换器) DAC基本原理:将数字信号转换为模拟电压信号。 STM32F103x的DAC特点:2个12位DAC通道,支持DMA。 DAC寄存器: DAC控制寄存器(CR):DAC通道使能、DMA使能、触发输出使能。 DAC数据寄存器(DR):写入数字值。 DAC软件触发寄存器(SWTR)。 DAC应用实例: 输出任意波形(正弦波、三角波等)。 产生可调的参考电压。 第三部分:嵌入式系统设计与实战项目 第十一章:嵌入式通信协议与数据传输 11.1 串行通信协议回顾与扩展 UART/USART协议的深入理解。 SPI协议的深入理解。 I2C协议的深入理解。 11.2 嵌入式网络通信(可选,如涉及,此处介绍基础) TCP/IP协议栈基础(如若项目涉及)。 以太网接口(若STM32F103x板载)。 Wi-Fi模块通信(如ESP8266)。 11.3 RS-485通信 RS-485协议特点:差分信号、远距离、多设备总线。 STM32F103x通过MAX485等芯片实现RS-485通信。 RS-485通信实例:多设备数据采集与控制。 11.4 CAN总线通信(若STM32F103x板载CAN控制器) CAN总线协议介绍:特点、帧格式、优势。 STM32F103x的CAN控制器使用。 CAN通信实例:车辆总线模拟、工业控制网络。 第十二章:存储器管理与文件系统(可选,如涉及) 12.1 外部存储器接口 FLASH存储器:NOR Flash,NAND Flash(介绍基本原理和接口)。 SD卡接口:SPI模式、SDIO模式。 EEPROM:I2C EEPROM。 12.2 文件系统 FATFS文件系统介绍:标准文件系统,支持FAT16/FAT32。 如何将FATFS移植到STM32F103x,配合SD卡实现文件读写。 文件系统应用:数据日志记录、配置文件存储。 第十三章:实战项目一:智能家居温湿度监测与数据上传 项目概述: 使用DHT11/DHT22传感器采集温湿度,通过STM32F103x读取数据,并将其通过ESP8266 Wi-Fi模块上传到云服务器(如阿里云IoT、ThingsBoard等)。 硬件准备: STM32F103x开发板、DHT11/DHT22温湿度传感器、ESP8266模块、USB转串口模块、电源。 软件设计: DHT11/DHT22传感器数据读取驱动的编写。 ESP8266模块AT指令通信(UART)。 Wi-Fi连接与MQTT协议通信。 温湿度数据显示与上传。 核心技术点: 传感器驱动开发、串口通信、AT指令控制Wi-Fi模块、MQTT通信协议。 第十四章:实战项目二:基于STM32F103x的步进电机精确控制系统 项目概述: 使用STM32F103x的定时器生成精确的PWM信号,通过驱动电路控制步进电机转动,实现任意角度的定位和速度控制。 硬件准备: STM32F103x开发板、步进电机、步进电机驱动器(如ULN2003、A4988等)、LED、按键、电源。 软件设计: 步进电机驱动原理与步进模式(全步、半步、微步)。 基于定时器的PWM信号生成,精确控制步进电机脉冲频率。 方向控制与使能控制。 按键输入控制电机启动、停止、正反转、速度调整。 LED指示灯状态显示。 核心技术点: 定时器PWM输出、步进电机驱动电路、嵌入式电机控制算法。 第十五章:实战项目三:多功能数据采集与显示系统 项目概述: 集成多种传感器(如光敏传感器、霍尔传感器、超声波测距模块),通过ADC、GPIO、串口等接口采集数据,并在LCD1602或OLED屏幕上显示。 硬件准备: STM32F103x开发板、LCD1602/OLED显示屏、光敏传感器、霍尔传感器、超声波测距模块、按键、导线、电源。 软件设计: GPIO输入配置,读取霍尔传感器信号。 ADC输入配置,读取光敏传感器模拟量。 超声波测距模块驱动:GPIO输出触发脉冲,GPIO输入测量回波时间。 LCD1602/OLED显示驱动的移植或编写。 数据显示刷新与更新。 核心技术点: 多种接口混合使用(GPIO, ADC, Timer for Pulse)、外部设备驱动开发、屏幕显示控制。 附录 STM32F103x数据手册(Datasheet)阅读指南 STM32F103x参考手册(Reference Manual)关键章节解读 常用STM32F103x寄存器汇总 嵌入式开发常用工具介绍 常见问题与故障排除 本书力求理论与实践相结合,通过清晰的讲解和丰富的实例,引导读者一步步掌握STM32F103x微控制器的开发技术,培养独立解决嵌入式开发问题的能力,为更复杂的嵌入式项目打下坚实基础。

用户评价

评分

最近在做一些智能家居相关的项目,感觉纯粹的裸机编程已经越来越难以满足功能的需求,特别是需要同时处理多个传感器数据、用户界面交互以及网络通信等任务时,一个强大的实时操作系统就显得尤为重要。《STM32F103x微控制器与μC/OS-Ⅱ操作系统》这本书,在我看来,正是解决我当前痛点的绝佳选择。我非常期待这本书能够深入讲解如何使用μC/OS-II来管理STM32F103x的各个任务,如何通过各种同步与通信机制来保证不同任务之间协同工作的稳定性。特别是对于 I/O 密集型或者对实时性要求较高的场景,我希望能在这本书中找到切实可行的解决方案和优化建议,比如如何设计合理的任务优先级,如何利用定时器实现精确的任务延迟,以及如何优雅地处理中断与任务之间的交互。

评分

我是一名在嵌入式领域工作了多年的工程师,一直专注于底层驱动和嵌入式 Linux 开发,最近因为一些项目需求,开始重新审视实时操作系统在一些小型、低功耗设备上的应用。《STM32F103x微控制器与μC/OS-Ⅱ操作系统》这本书,标题就非常契合我想要了解的领域。虽然 μC/OS-II 并非最新一代的 RTOS,但其经典的设计理念和广泛的应用基础,仍然具有很高的学习价值。我尤其想了解书中是如何将 μC/OS-II 的核心功能,例如其调度算法、内存管理、事件标志组等,与 STM32F103x 这款MCU的硬件特性相结合,实现高效的系统运行。我希望书中能提供一些深入的性能分析和优化技巧,帮助我理解如何在资源极其有限的情况下,榨干 STM32F103x 的性能,并构建出稳定可靠的嵌入式系统。

评分

我是一名刚从大学毕业,对嵌入式开发充满热情,但实战经验尚浅的学生。在学习过程中,我发现理论知识总是显得有些抽象,而掌握一门实时操作系统则是迈向高级嵌入式开发的关键一步。《STM32F103x微控制器与μC/OS-Ⅱ操作系统》这本书,在我看来,就像是一本“圣经”,能指引我入门 RTOS 的殿堂。我对书中关于 μC/OS-II 的介绍非常感兴趣,特别是它的可移植性、源码开放以及在资源受限的嵌入式系统中的高效表现。我希望这本书能用最直观、最易懂的方式,将 μC/OS-II 的各种概念分解开来,并且能够提供清晰的源码分析,让我明白每一行代码背后的含义。同时,它与 STM32F103x 这种主流MCU的结合,也意味着我能够用相对低廉的成本,搭建一套完整的 RTOS 开发环境,这对于我们学生来说是非常有吸引力的。

评分

拿到这本《STM32F103x微控制器与μC/OS-Ⅱ操作系统》的时候,我正是对嵌入式开发,尤其是实时操作系统(RTOS)方面充满好奇和渴望深入学习的阶段。我之前接触过一些裸机编程,也尝试过一些简单的操作系统概念,但始终觉得理论和实践之间存在着一道难以逾越的鸿沟。这本书的标题立刻吸引了我,STM32F103x系列作为一款非常经典且应用广泛的微控制器,其本身就代表了相当一部分嵌入式开发的基础;而μC/OS-Ⅱ,作为曾经风靡一时的RTOS,更是承载了无数嵌入式工程师的梦想。我当时非常期待这本书能够带我进入一个全新的开发境界,让我理解如何在资源有限的微控制器上实现多任务、任务调度、同步通信等复杂功能。我希望能在这本书中找到关于如何高效利用STM32F103x的各个外设,例如GPIO、UART、SPI、I2C等,并将这些外设的操作与μC/OS-Ⅱ的任务紧密结合的详细指导。

评分

作为一名在嵌入式领域摸爬滚打了几年,但又在 RTOS 领域相对“新手”的开发者,我一直想找一本既能讲透 μC/OS-II 的核心原理,又能结合具体硬件进行实战演练的书籍。《STM32F103x微控制器与μC/OS-Ⅱ操作系统》这个标题,让我觉得它很有可能填补我的知识空白。我特别关注的是,这本书是否能清晰地阐述 μC/OS-II 的内核机制,比如任务创建、删除、阻塞、唤醒的流程,信号量、互斥锁、消息队列等IPC(Inter-Process Communication)机制的运作原理,以及如何利用这些机制来设计健壮、可维护的嵌入式系统。同时,我期望书中能够提供大量基于 STM32F103x 平台的实例,这些实例最好能覆盖从简单的LED闪烁到稍微复杂的传感器数据采集与处理,甚至是一些网络通信的基础应用,这样我才能真正地“动手”起来,将书本知识转化为实际能力。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有