1STM32开发基础(1+X传感网应用开发资料课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《1STM32开发基础(1+X传感网应用开发资料课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 开发 基础 传感 应用 资料 课件
- 资源描述:
-
1、北京XXSD教育科技有限公司01STM32基础知识02开发环境的搭建与工程的建立03LED流水灯应用开发目录目录CONTENTS04按键控制呼吸灯应用开发05串行通信控制LED灯应用开发06电池电量监测应用开发STM32基础开发基础开发1STM32STM32基础知识基础知识STM32是意法半导体(STMicroelectronics,简称ST)有限公司出品的一系列微控制器(Micro Controller Unit,简称MCU)的统称。展示了STM32微控制器的产品家族。STM32基础知识基础知识STM32微控制器的命名规则STM32基础知识基础知识下面以一个具体的微控制器型号(STM32F1
2、03VET6)为例来说明型号中各部分的含义,如表2-1所示。序号序号型号型号具体含义具体含义1STM32代表ST公司出品的基于ARM Cortex-M内核的32位微控制器。2F代表“基础型”产品类别。3103代表“基础型”产品系列。4V代表MCU的引脚数,如:T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表176脚等。5E代表MCU的内存容量,如:6代表32K字节,8代表64K字节,B代表128K字节,C代表256K字节,D代表384K字节,E代表512K字节,G代表1M字节。6T代表MCU的封装,如:H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装
3、。76代表MCU的工作温度范围,如:6和A代表-40到85,7和B代表-40到105。STM32基础知识基础知识STM32微控制器的主要特征微控制器的主要特征(1)32位位ARM Cortex-M3内核内核CPU(2)存储)存储(3)时钟、复位和电源管理)时钟、复位和电源管理(4)低功耗)低功耗(5)3个个12bit,1s A/D转换器(最多支持转换器(最多支持21个通道)个通道)(6)2个个12bit D/A转换器转换器(7)调试模式)调试模式(8)最多)最多112个快速个快速I/O口口(9)11个定时器个定时器(10)多达)多达13个通信接口个通信接口(11)CRC计算单元,计算单元,96
4、位唯一位唯一ID(12)无铅()无铅(ECOPACK)封装)封装STM32基础知识基础知识STM32STM32的应用领域的应用领域STM32基础知识基础知识2开发环境的搭建与工程的建立开发环境的搭建与工程的建立2任务要求任务要求 本任务要求搭建基于STM32CubeMX工具和HAL库的STM32微控制器的开发环境,生成可在MDK-ARM集成开发环境下运行的工程。正确地配置、编译工程后,将其下载至开发板中运行。2知识连接知识连接1.STM32的软件开发库的软件开发库软件开发库名称移植性程序优化(内存占用&执行效率)易用性程序可读性支持硬件系列STM32Snippets+标准外设库+STM32Cu
5、beHAL库+LL库+在学习STM32的软件开发模式之前,我们有必要先了解STM32的软件开发库。ST公司为开发者提供了多个软件开发库,如:标准外设库、HAL库与LL库。另外,ST公司还针对F0与L0系列MCU推出了STM32 Snippets示例代码集合。标准外设库推出时间最早,HAL库次之,而LL库是最近才新增的,目前支持的芯片较少,尚未覆盖全系列产品。ST公司为这些软件开发库配套了齐备的开发文档,为开发者的使用提供了极大的方便。2知识连接知识连接2.STM32的软件开发模式的软件开发模式 开发者基于ST公司提供的软件开发库进行应用程序的开发,常用的STM32软件开发模式主要有以下几种:(
6、1)基于寄存器的开发模式)基于寄存器的开发模式(2)基于标准外设库的开发模式)基于标准外设库的开发模式(3)基于)基于STM32Cube的开发模式的开发模式 这种开发模式对开发者的要求较低:开发者只要会调用API即可编写程序。基于标准外设库编写的代码容错性好且后期维护简单,其缺点是运行速度相对寄存器级的代码偏慢。总的来说,这种开发模式适合快速入门,大多数初学者会选择这种开发模式。基于寄存器编写的代码简练、执行效率高。这种开发模式有助于开发者从细节上了解STM32微控制器的架构与工作原理,但由于STM32微控制器的片上外设多且寄存器功能五花八门,因此开发者需要花费很多时间精力研究产品手册。总的来
7、说,这种开发模式适合有较强编程功底的开发者。基于STM32Cube的开发模式是ST公司目前主推的一种模式,对于近年来推出的新产品,ST公司也已不为其配备标准外设库。因此,为了顺应技术发展的潮流,本书选取了基于STM32Cube的开发模式,后续的任务实施的讲解,都是基于这种开发模式。2知识连接知识连接3.STM32的集成开发环境的集成开发环境 根据ST公司官网显示,支持STM32开发的IDEs(Integrated Development Environments,集成开发环境)有20余种,其中包括商业版软件和纯免费的软件。目前比较常用的商业版IDE有MDK-ARM与IAR-EWARM,免费的I
8、DE包括SW4STM32、TrueSTUDIO和CoIDE等。另外,ST官方推荐使用STM32CubeMX软件可视化地进行芯片资源和管脚的配置,然后生成项目的源程序,最后导入IDEs中进行编译、调试与下载。本书在后续的任务实施讲解中,将采用“STM32CubeMX+MDK-ARM”的开发工具组合。根据任务要求,利用STM32CubeMX进行功能配置;生成基于MDK-ARM集成开发环境的初始代码;添加功能逻辑完成应用开发。201下载安装包并安装02安装软件包任务实施任务实施1.MDK-ARM的安装的安装201下载安装包并安装02嵌入式软件包的安装任务实施任务实施2.STM32CubeMX的安装的
9、安装2任务实施任务实施3.ST-Link驱动程序的安装驱动程序的安装 ST-Link是ST公司官方出品的一款支持STM32系列单片机的程序下载调试工具,使用前应安装相应的驱动程序。MDK-ARM的安装目录中包含了ST-Link下载调试工具的驱动程序,其位于“C:Keil_v5ARMSTLinkUSBDriver”路径,如图中的标号处所示。读者的PC机如果安装了64位的操作系统,则直接执行上述路径下的“dpinst_amd64.exe”可执行文件即可完成驱动程序的安装,如图中的标号处所示。2任务实施任务实施4.建立工程建立工程01建立工程存放的文件夹建立工程存放的文件夹新建新建STM32Cube
10、MXSTM32CubeMX工程工程0203配置配置GPIOGPIO功能功能配置调试端口配置调试端口0405配置配置MCUMCU时钟树时钟树06保存保存STM32CubeMXSTM32CubeMX工程工程07生成生成C C代码初始工程代码初始工程2任务实施任务实施5.完善完善main()函数函数 打开后的工程如图所示,展开左侧的“工程列表”窗口,打开“main.c”文件(右图的标号处),在while(1)代码段中添加标号处所示的两行代码。2任务实施任务实施6.C代码工程配置代码工程配置2任务实施任务实施6.C代码工程配置代码工程配置2任务实施任务实施7.编译工程、下载并运行编译工程、下载并运行本
11、工程运行的现象是LED2闪烁,亮1秒灭1秒,周期为2秒。3LEDLED流水灯应用开发流水灯应用开发3任务要求任务要求本任务要求设计一个LED流水灯系统,具体要求如下:系统中有8个LED灯,分别是LED1LED8。系统上电时,8个LED灯默认为熄灭状态。接下来8个LED灯依次点亮,即:LED1点亮1秒后熄灭,然后LED2点亮1秒后熄灭最后LED8点亮1秒后熄灭,并以此循环往复。3知识连接知识连接1.认识认识STM32Cube嵌入式软件包嵌入式软件包接下来以STM32CubeF1为例,介绍STM32Cube嵌入式软件包的构成。点击STM32CubeMX软件上方的“Help”菜单,选择“Update
12、r Settings”选项,在弹出的设置框中可找到软件包的存放地址,如图中标号处所示。3知识连接知识连接 进入STM32Cube嵌入式软件包的存放地址,可以看到软件包由6个文件夹和2个文件构成,如图所示。l“_ h t m r e s c”文 件 夹、“p a c k a g e.x m l”和“Release_Notes.html”文件是软件包发布记录及一些图标资源。l Documentation文件夹:存放软件包的帮助文档,为“.pdf”格式。l Drivers文件夹:存放STM32Cube固件驱动函数库。l Middlewares文件夹:存放中间件组件。l Projects文件夹:存放实
13、例(Examples)、应用程序(Applications)、演示案例(Demonstrations)。l Utilities文件夹:存放一些工具类杂项。3知识连接知识连接图展示了STM32Cube软件包的组件构成框架。l 对应软件包中“DriversSTM32F1xx_HAL_Driver”文件夹;l 对应软件包中“Projects开发板文件夹Examples”文件夹;l 对应软件包中“Middlewares”文件夹;l 对应软件包中“Projects开发板文件夹Demonstrations”文件夹;l 对应软件包中“Utilities”文件夹;l 对应软件包中“DriversCMSIS”文
14、件夹;l STM32CubeMX软件。3知识连接知识连接2.工程架构分析工程架构分析 在进行应用开发之前,我们有必要对STM32CubeMX软件生成的初始C代码工程进行了解,如:了解工程架构、了解主要的函数功能与执行过程。打开“task1_ProjectFirst”,如图所示。编号函数名函数功能标号HAL_Init()系统外设初始化标号SystemClock_Config()系统时钟初始化标号MX_GPIO_Config()GPIO功能初始化标号While(1)主循环3知识连接知识连接3.GPIO工作模式配置工作模式配置 G P I O 工 作 模 式 配 置 相 关 的 函 数 A P I
15、主 要 位 于“s t m 3 2 f 1 x x _ h a l _ g p i o.c”和“stm32f1xx_hal_gpio.h”文件中。利用HAL库进行应用开发时,各外设的初始化一般通过对初始化结构体的成员赋值来完成。某个GPIO端口的初始化函数原型如下:typedef struct uint32_t Pin;要初始化的要初始化的GPIO引脚编号引脚编号 uint32_t Mode;GPIO引脚的工作模式引脚的工作模式 uint32_t Pull;GPIO引脚的上拉引脚的上拉/下拉形式下拉形式 uint32_t Speed;GPIO引脚的输出速度引脚的输出速度 GPIO_InitTy
16、peDef;接下来主要对GPIO引脚的工作模式这个成员进行介绍。GPIO的工作模式主要有以下几种:GPIO_MODE_INPUT:输入模式GPIO_MODE_OUTPUT_PP:推挽输出模式GPIO_MODE_OUTPUT_OD:开漏输出模式GPIO_MODE_AF_PP:推挽复用模式GPIO_MODE_AF_OD:开漏复用模式GPIO_MODE_AF_INPUT:复用输入模式GPIO_MODE_ANALOG:模拟量输入模式l 第一个参数是需要初始化的GPIO端口,对于STM32F103VET6型号来说,取值范围是GPIOA GPIOE。l 第二个参数是初始化参数的结构体指针,结构体类型为GP
17、IO_InitTypeDef。void HAL_GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef*GPIO_Init)3知识连接知识连接4.定时器基本定时功能配置定时器基本定时功能配置(1)STM32F103VE型号型号MCU定时器概述定时器概述 STM32F103VE型号MCU共有8个定时器,编号为TIM1TIM8,其中包括2个高级控制定时器、4个通用定时器和2个基本定时器。定时器类型定时器编号计数器位数计数器类型捕获/比较通道数挂载总线/接口时钟定时器时钟高级控制定时器TIM1、TIM816位递增、递减、递增/递减4APB2/72MHz72MHz
18、通用定时器TIM2、TIM3TIM4、TIM516位递增、递减、递增/递减4APB1/36MHz72MHz基本定时器TIM6、TIM716位递增无APB1/36MHz72MHz3知识连接知识连接(2)基本定时器功能框图)基本定时器功能框图 计数器寄存器(计数器寄存器(TIMx_CNT)预分频器寄存器(预分频器寄存器(TIMx_PSC)自动重载寄存器(自动重载寄存器(TIMx_ARR)3知识连接知识连接(3)定时器基本初始化结构体介绍)定时器基本初始化结构体介绍typedef struct uint32_t Prescaler;定时器时钟源分频系数定时器时钟源分频系数 uint32_t Coun
19、terMode;计数模式计数模式 uint32_t Period;周期(自动重载值)周期(自动重载值)uint32_t ClockDivision;定时器内部时钟分频系数定时器内部时钟分频系数 uint32_t RepetitionCounter;重复计数值重复计数值 uint32_t AutoReloadPreload;是否启用预加载功能是否启用预加载功能 TIM_Base_InitTypeDef;3知识连接知识连接(4)配置定时器的工作参数)配置定时器的工作参数根据本任务的要求,LED流水灯每隔1秒钟切换一次显示效果。因此可以使能TIM6的更新中断,并将时间间隔配置为1秒钟。配置配置CK_
20、CNT频率频率TIM6挂载在挂载在APB1总线上,定时器时钟源频率(总线上,定时器时钟源频率(CK_INT=CK_PSC)为)为36MHz2=72MHz。可将。可将TIMx_PSC配配置为置为7199,根据计算公式可得:,根据计算公式可得:fCK_CNT=72MHz/(7199+1)=10000Hz(周期为(周期为100s)配置自动重载寄存器配置自动重载寄存器TIMx_ARR值值1s(1000000s)100us=10000=(TIMx_ARR+1)即:即:TIMx_ARR=10000 1=99993任务实施任务实施01建立工程存放的文件夹建立工程存放的文件夹新建新建STM32CubeMXST
21、M32CubeMX工程工程0203选择选择MCUMCU型号型号配置调试端口配置调试端口0405配置配置MCUMCU时钟树时钟树06配置配置LEDLED灯相关的灯相关的GPIOGPIO功功能能07配置定时器配置定时器TIM6TIM6的参数的参数与中断功能与中断功能08保存保存STM32CubeMXSTM32CubeMX工程工程1.建立建立STM32CubeMX工程并生成初始工程并生成初始C代码代码09生成初始生成初始C C代码工程代码工程301使能TIM6更新中断02编写TIM6更新中断服务程序任务实施任务实施2.完善代码完善代码03添加自定义变量和函数定义04编写main()函数的主循环程序
22、编译程序并下载运行后的现象是系统上电时,8个LED灯默认为熄灭状态,接下来8个LED灯依次点亮。4按键控制呼吸灯应用开发按键控制呼吸灯应用开发4任务要求任务要求本任务要求设计一个可通过按键进行控制的呼吸灯系统,具体要求如下:使用外部中断实现按键功能;LED灯的显示效果为“逐渐变亮”然后“逐渐变暗”;系统刚上电时,LED灯为关闭状态。第奇数次按下按键,LED灯显示呼吸灯效果;第偶数次按下按键,LED灯关闭,并以此循环往复。按键与呼吸灯的电路原理图如图2-36所示,其中按键的GPIO引脚为PC13,呼吸灯LED与GPIO引脚PB8相连。知识连接知识连接1.STM32F1的中断管理的中断管理STM3
展开阅读全文