基于STM32的PWM输出实验设计
2017-09-03廉佐政王海珍
廉佐政, 王海珍
(1. 齐齐哈尔大学 现代教育技术中心, 黑龙江 齐齐哈尔 161006;2. 齐齐哈尔大学 计算机与控制工程学院, 黑龙江 齐齐哈尔 161006)
基于STM32的PWM输出实验设计
廉佐政1, 王海珍2
(1. 齐齐哈尔大学 现代教育技术中心, 黑龙江 齐齐哈尔 161006;2. 齐齐哈尔大学 计算机与控制工程学院, 黑龙江 齐齐哈尔 161006)
为了提高学生对STM32系列处理器知识的理解和应用能力,设计了PWM输出的可调照明实验。硬件系统的设计采用STM32F103VC的ARM芯片,软件设计采用keil MDK 4.53,结合STM32标准库V3.5编写程序。通过程序调试、运行,给出了实验仿真结果。通过实验操作,学生不仅掌握了PWM的原理及综合应用,也进一步提高了对嵌入式系统课程知识的学习兴趣,得到了良好的教学效果。
STM32系列处理器; PWM输出; STM32标准库; 嵌入式
嵌入式技术已经被广泛应用到移动通信、PDA、高清电视、智能家电、汽车、医疗仪器、航天航空、互联网等领域[1-3],嵌入式系统课程在网络工程专业教学中占有举足轻重的地位。但是,一些学校在嵌入式系统课程教学中往往重理论、轻项目应用和实践操作[4]。为此,齐齐哈尔大学在该课程教学中选用嵌入式开发实例教材,以STM32系列的ARM处理器原理为主线,结合仿真实验,提高了学生对课程知识的应用能力。
STM32系列ARM采用Cortex-M3内核,能够满足高性能、低成本、低功耗的嵌入式应用[5]。STM32系列分为STM32F103增强型系列和STM32F101基本型系列[6-8],嵌入式系统课程主要讲授STM32F103系列处理器。其中,高级控制定时器TIM1输出PWM(pulse width modulation,脉冲宽度调制)是该系列处理器的重要功能,也是课程学习的难点知识。
笔者设计了PWM控制的可调照明实验。用LED模拟照明灯,通过TIM1的参数配置,使其依次输出4路不同占空比的PWM波形,且每个PWM波形输出分别对应不同的LED灯照明亮度,模拟实现照明系统不同的亮度调节。
1 高级控制定时器TIM1和PWM原理
在STM32F103增强型系列产品中,芯片包含1个高级控制定时器TIM1,它可以被看作一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。4个独立的通道可以实现输入捕获、输出比较、产生PWM和单脉冲输出。PWM输出是TIM1的主要功能。
PWM是利用微处理器的数字输出对模拟电路进行控制的一种技术[9],它经济、节约空间、抗噪性能强,已经被广泛应用在电池涓流通电、照明系统亮度调节、电动机转速调节等工程问题中[10-13]。
以PWM调节照明设备亮度为例,它是把每一个脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期对输出波形的频率进行调整,以改变脉冲的宽度或占空比来实现对输出电压的调节。一般而言,只要采用适当的控制方法,即可使输出的电压和频率协同变化。同样,通过调整PWM波形的周期和占空比,可以实现对驱动电流的控制,从而调节照明系统的亮度。PWM调光的亮度基于人的眼睛对图像(光线)的视觉暂留的特点,也称为人眼的余辉效应。对于LED灯而言,如果光的频率超过100 Hz,人眼可以看到的就是发光源的平均强度,而不是闪烁。
因此,可以采用PWM调节照明设备的亮度。这种调节方法的优点是从处理器到被控系统信号全部数字化,可以极大地延长通信距离,并且PWM波形控制也无需模数转换。让信号保持为数字形式,可将噪声对输出信号的影响降到最低。噪声只有在强到足以将逻辑“1”电平转换为逻辑“0”电平,或者将逻辑“0”电平转换为逻辑“1”电平时,才能对数字信号产生影响。
2 硬件系统的设计
实验硬件系统采用STM32F103VC的ARM芯片,其外设设计用到的基本元器件如表1所示,电路如图1所示。
表1 可调照明实验装置的硬件
图1 电路图
使用微处理器的GPIO端口PA.8—PA.11输出PWM波形,并分别通过三极管Q1—Q4驱动LED1—LED4。PWM波形是按照一定频率变换的,因此,三极管的状态不是持续地导通,而是按照PWM方波的频率间隔导通的,所以LED的状态是间隔闪烁的。由于人眼对快速变化的光线存在视觉暂留效应,即人眼所看到的是LED的平均亮度,可以认为LED是发光的,只是亮度有所变化,从而达到调节亮度的目的。
3 软件系统的设计
软件系统的设计使用keil MDK 4.53,先配置STM32标准库V3.5,然后设计软件程序,利用ARM处理器STM32F103VC中的TIM1高级定时器,在GPIOA端口输出不同占空比的PWM脉冲信号,用于调节LED的亮度。PWM占空比和LED灯的亮度对应的关系见表2。由于各路输出的PWM脉冲信号具有不同的占空比,因此LED灯的亮度也会有所不同。
表2 PWM占空比与照明亮度的关系
软件系统设计主要实现两个任务:一是在Keil MDK环境下进行STM32标准库V3.5的配置,二是基于标准库设计相关程序。
3.1 STM32标准库V3.5的配置
在STM官网下载标准库V3.5,然后进行配置[12]。
3.1.1 建立工程模板
如果工程模板建在C:KeilARMExamplesMeasure文件夹下,就在该文件下建立“MDK工程”文件夹,并在其下建立以下文件夹:
(1) Libraries文件夹:用于存放标准库V3.5的STM32F10x_StdPeriph_Lib_V3.5.0 Libraries STM32F10x_StdPeriph_Driver下的inc和src文件夹;
(2) CMSIS文件夹:用于存放标准库V3.5的STM32F10x_StdPeriph_Lib_V3.5.0 LibrariesCMSIS文件夹内容,并把CMSISCM3DeviceSupportSTSTM32F10x文件夹下的Startup文件夹剪切出来置于Libraries文件夹下;
(3) Project文件夹:用于存放项目文件及项目的输出信息,建立Obj和List2个文件夹,分别存放目标文件和列表文件;再建立一个文件夹(如pro1),存放建立的工程文件;
(4) StartUp文件夹:用于存放标准库V3.5的startuparm目录下的startup_stm32f10x_hd.s文件;
(5) USER文件夹:建立main.c文件,只包含头文件#include"stm32f10x.h"即可,再从标准库V3.5的STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Templat目录下复制stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h到该文件夹。
3.1.2 建立工程
启动keil MDK,使用STM32标准库V3.5新建一个工程,命名为pro1.uvproj,保存在Projectpro1文件夹下面,选择使用STM32F103VC芯片,确定后,在弹出的“加载系统默认配置”窗口中选择“否”。
3.1.3 添加文件
在test上单击右键,选择Manage Components,按图2把文件加进去,在Libraries目录下添加stm32f10x_flash.c、stm32F10x_tim.c 、stm32f10x_sdio.c,然后设置编译文件的路径。
图2 工程文件目录
3.1.4 存储容量及标准库选择
main.c中有#include“stm32f10x.h”,打开该头文件,找到0070行,取消对#defineSTM32F10X_HD的屏蔽;找到0105行,取消对#defineUSE_STDPERIPH_DRIVER的屏蔽。0070行是选择存储容量的型号,每种芯片不一样,需要选择;0105行是使用标准库文件,默认是不用库的,直接进行寄存器的操作,但由于设计程序时用了标准库,所以必须选择。也可以直接按图3操作。
图3 存储容量及标准库选择
3.1.5 选项设置
在图2的test上单击右键,选择Option for Target ‘test’,进行下面3项设置:
(1) 打开Output页标签,选中“Create HEX File”复选框,设置输出文件所在的目录为C:KeilARMExamplesMeasureMDK工程ProjectObj;
(2) 打开Listing页标签,设置列表文件所在的目录为C:Keil ARM Examples Measure MDK工程ProjectList;
(3) 打开Debug页标签,按图4设置。
图4 目标选项设置
3.2 基于标准库V3.5设计程序
(1) main函数设计。如图2所示,双击main.c,打开main函数窗口,编写GPIO配置子函数和定时器配置子函数。GPIO配置子函数使用GPIO_Init库函数,实现PA.8—PA.11引脚输出,最高工作频率50 MHz。定时器配置子函数使用TIM_TimeBaseInit、TIM_OC1Init、TIM_OC1PreloadConfig、TIM_Cmd、TIM_CtrlPWMOutputs库函数,实现定时器1为向上计数模式,4个通道工作在PWM2模式,装入捕获比较寄存器的值,与捕获值相等时输出低电平;使能TIM1在捕获比较寄存器上的预装载寄存器;使能GPIOA端口的PWM主输出;使能计数器功能。
(2) 程序编译。打开Project选单,执行rebuild all target files命令,对工程进行编译。对出现的错误进行修改,直至编译没有错误,就可以调试。打开逻辑分析仪窗口,设置观察PWM的引脚,连续运行程序,观察PWM波形变化。
4 实验仿真
打开Debug选单,执行Start/Stop Debug Session命令,进入调试界面。在快捷工具栏上单击Analysis Windows按钮,打开Logic Analyzer窗口;单击该窗口的左上角的Setup按钮,设置可观察的输出信号。由于PA.8—PA.11输出PWM信号,所以在“Current Logic Analyzer Signals”下创建4个PORTA,分别对应PA.8—PA.11。图5所示为PA.8输出信号设置实例,其他端口的输出与此类似。设置完毕后单击Close,关闭Setup Logic Analyzer。连续运行程序,即可观察到如图6所示的输出波形。
图5 Logic Analyzer的设置
图6 实验仿真结果
图6中的波形由上到下是占空比分别为12.5%、25%、37.5%、50%的4个通道输出的PWM波形,可以看到LED1—LED4越来越亮。可以通过修改捕获寄存器的值来改变占空比,从而调节LED灯的亮度。
5 结语
PWM输出的主要特点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。伴随全控型电力电子器件的出现和迅速发展,PWM得到了广泛的应用。在嵌入式课程教学中安排可调照明实验,可帮助学生深入理解STM32系列处理器PWM的原理、应用和实践操作方法,提高学生的综合应用能力。
References)
[1] 刘静静.基于ARM和μC/OS-Ⅱ的嵌入式应用系统的设计[D].青岛:中国海洋大学,2016.
[2] 莫政洲.嵌入式技术在移动通信系统中的应用探析[J].科技创新与应用,2016(12):90.
[3] 周北明.嵌入式技术在船舶区域配电监控中的应用[J].舰船科学技术,2016(16):46-48.
[4] 徐文超,耿艳香,陈雷,等.嵌入式系统原理课程创新型教学改革研究[J].计算机教育,2015(8):55-57.
[5] 魏永辉.嵌入式STM32下无源蜂鸣器发声[J].科技展望,2016,26(24):145.
[6] 刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013.
[7] 喻金钱.STM32F系列ARMCortex-M3核微控制器开发与应用[M].北京:清华大学出版社,2011.
[8] 陈志旺.STM32嵌入式微控制器快速上手[M].2版.北京:电子工业出版社,2014.
[9] 涂思涵.脉宽调制电源控制器芯片(PWM)电性能测试技术的研究[D].上海:复旦大学,2013.
[10] 任增田.基于PWM整流技术的充放电系统研究[D].哈尔滨:哈尔滨工程大学,2012.
[11] 赵祖明,李歧强,王荣丽.无线传感网络与模糊控制在照明系统中的应用[J].照明工程学报,2014(2):102-106.
[12] 蔡金华.风力发电机组的神经网络自适应控制策略研究[D].武汉:华中科技大学,2012.
[13] 鲁刚强.基于单片机PWM信号控制LED的软件实现方法[J].电子世界,2012(9):46-47.
Design on experiment of PWM output based on STM32
Lian Zuozheng1, Wang Haizhen2
(1. Modern Educational Technology Center, Qiqihar University,Qiqihar 161006, China;2. College of Computer and Control Engineering, Qiqihar University, Qiqihar 161006, China)
In order to improve the students’ understanding and application ability of STM32 series processors, a kind of the adjustable illumination experiment based on PWM output is devised. The hardware system is designed with the ARM chip of STM32F103VC, and the software with keil MDK 4.53, combining the STM32 standard library V3.5 program. Through the program debugging and running, the experimental simulation results are presented. By the experimental operation, the students not only master PWM principle and its comprehensive application, but also stimulate their interest in learning the Embedded System course, and the good teaching effect is achieved.
STM32 series processor; PWM output; STM32 standard library; embedded system
10.16791/j.cnki.sjg.2017.08.034
2017-02-06
黑龙江省自然科学基金项目(F201218);黑龙江教育科学“十二五”规划项目(GBC1213078);黑龙江高教学会规划项目(14G146);齐齐哈尔大学青年教师科研启动支持计划项目(2011k-M05);齐齐哈尔市科技局攻关项目(GYGG-201507,NYGG-201304,GYGG-201315、GYZD2013007);齐齐哈尔大学教育科学研究项目(2014018)
廉佐政(1977—),男,黑龙江海伦,硕士,副教授,主要研究方向为智能Agent、数据挖掘和嵌入式技术.E-mail:lianzuozheng@163.com
TN761;TP391.9
A
1002-4956(2017)08-0137-04