基于a控制的交流伺服系统设计_第1页
基于a控制的交流伺服系统设计_第2页
基于a控制的交流伺服系统设计_第3页
基于a控制的交流伺服系统设计_第4页
基于a控制的交流伺服系统设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告(运动模块)院:电气工程与自动化学院学题目:基于 ARM的交流伺服系统设计专业班级:自动化 112 班学号:03学生姓名:指导:2014年 1 月14 日摘要运动技术能够快速发展得益于计算机、高速数字处理器、自动、网络技术的发展。基于 ARM 的器逐步成为自动化领域的主导之一。高速、高精度以及具有良好可靠性始终是运动技术追求的目标。随着自动化水平的不断提高,越来越多的工业场合需要精确的位置。因此,如何更方便、更准确地实现位置是工业领域内的一个重要问题。伺服系统是以机械运动的驱动设备,伺服电为对象,以器为,以电力电子功率变换装置为执行机构,在自动理论的指导下组成的电气传动自动系统,这

2、类系统电调转速,将电能转换为机械能,实现运械的运动要求。本文介绍了基于 ARM的交流伺服系统设计。该系统采用 STM32 芯伺服电机驱动器,从而对电机的转速位移进行,经 keil 编程片作为智能化,精确化。:自动化;ARM;STM32;伺服电机;D/A;器AbstractThe rapid development of motion control technology can benefit the development of computer , high-speed digital processor , automatic control, network technology .A

3、RM-based controllers graduallye one of the leading automation and controlproducts . High-speed , high precision and reliability with good motion control technology is always the goal .With increasing levels of automation , more and more industrial control applications require precise position contro

4、l. So , how to be more convenient and more accurate position control achieved is an important issue in the field of industrial control . Servo system is mechanical movement drives, servo motors to control objects to the controller as the core to power electronic power conversion devices for the impl

5、ementing agencies , electrical transmission automatic control system under the guidance of the composition of the automatic control theory , such systems control the motor speed adjustment , convert electrical energy into mechanical energy , mechanical movement required to achieve movement .This art

6、icle describes the AC servo control system design based on ARM . The control system uses the STM32 chip as the control core , by keil programming control servo motor drives , and thus the speed of the displacement of the motor intelligent , precisecontrol.Keywords : automation ; ARM; STM32; servo mo

7、tor ; D / A data acquisition ;controller目 录摘 要1Abstract2第 1 章绪论41.1 伺服电机技术现状141.2 伺服调速技术发展趋势151.3第 2 章2.12.2第 3 章课题主要研究内容5相关技术简介7交流伺服电机的原理简介237STM32 简介9系统硬件设计103.1 总体设计103.2 硬件布局设计103.3 强电电路连线设计4113.4 ARM板电路图11第 4 章系统软件设计134.1 交流伺服系统程序框图134.2 pwm 调速原理144.3 测速方式及原理5144.3.1 M 法数字测速144.3.2 T 法数字测速154.3

8、.3 M/T 法数字测速164.4 程序设计16第 5 章系统调试及注意事项175.1 系统的调试175.2 系统的注意事项17第六章 小结18致 谢19参考文献20附录 121附录 2221.2.3.4.液晶屏显示22PWM,中断程序23编码器程序29主程序30第 1 章绪论技术现状11.1 伺服电机从 70 年代后期到 80 年代初期,随着微处理器技术、大功率高性能半导体功率器件技术和电机永磁材料制造工艺的发展及其性能价格比的日益提高,交流伺服技术交流伺服电机和交流伺服系统逐渐成为主导。交流伺服驱动技术已经成为工业领域实现自动化的基础技术之一,并将逐渐取代直流伺服系统。交流伺服系统按其采用

9、的驱动电的类型来分,主要有两大类:永磁同步(SM 型)电交流伺服系统和感应式异步(IM 型)电交流伺服系统。其中,永磁同步电交流伺服系统在技术上已趋于完全成熟,具备了十分优良的低速性能,并可实现弱磁高速,拓宽了系统的调速范围,适应了高性能伺服驱动的要求。并且随着永磁材料性能的大幅度提高和价格的降低,其在工业生产自动化领域中的应用将越来越广泛,目前已成为交流伺服系统的主流。感应式异步电交流伺服系统由于感应式异步电结构坚固,制造容易,价格低廉,因而具有很好的发展前景,代表了将来伺服技术的方向。但由于该系统采用矢量变换,相对永磁同步电伺服系统来说比较复杂,而且电机低速运行时还存在着效率低,发热严重等

10、有待克服的技术问题,目前并未得到普遍应用。系统的执行元件一般为普通三相鼠笼型异步电,功率变换器件通常采用智能功率模块 IPM。为进一步提高系统的动态和静态性能,可采用位置和速度闭环。三相交流电流的跟随能有效地提高逆变器的电流响应速度,并且能限制暂态电流,从而有利于 IPM 的。速度环和位置环可使用单片机,以使策略获得更高的性能。电流调节器若为比例形式,三个交流电流环都用足够大的比例调节器进行,其比例系数应该在保证系统不产生振荡的前提下尽量选大些,使被控异步电三相交流电流的幅值、相位和频率紧随给定值快速变化,从而实现电压型逆变器的快速电流。电流用比例调节,具有结构简单、电流跟随性能好以及限制电起

11、制动电流快速可靠等诸多优点。技术发展趋势11.2 伺服调速由于现代微电子技术的不断进步以及电力电子电路良好的特性,使几乎所有新的理论,方法都得以在交流调速装置上应用和尝试。现代理论不断向交流调速领域渗透,特别是微型计算机及大规模集成电路的发展,使得交流电调速技术正向高频化、数字化和智能化方向发展。近年来电力电子装置的技术研究十分活跃,各种现代理论,如自适应和滑模变结构,以及智能和高动态性能都是研究的热点。这些研究必将把交流调速技术发展到一个新的水平系统的软化对 CPU提出了更高的要求,为了实现高性能的交流调速,要进行矢量的坐标变换,磁通矢量的计算和适应参数变化而修正磁通模型,以及内部的度、速度

12、、位置的重叠外环的实时,都需要多种数据和快速实时处理大量信息。可以预见,随着计算机容量的增加和运算速度的加快,交流调速系统的性能将得到很大的提高。科学的快速发展使得各学科之间已没有严格的界线,它们相互影响,相互渗透,从发展的角度来看,把神经网络、模糊、滑模变结构等现代控制理论用于伺服电机调速技术有着极其重要的意义和广阔的前景,可以认为这将是伺服电机调速技术的发展方向之一。此外领域的其他新技术如现场总线、自适应、遗传算法等,也将引入到交流传动领域,给伺服电机调速的技术带来的影响。1.3 课题主要研究内容本文以高性能的STM32 为,辅以键盘、显示、测速电路,设计基于 ARM的交流伺服电数字化系统

13、。系统目标为:1. 实现电机的转速输入与转速显示,实现电机转速的2. 实现电机的正反转;3电机定点停止;4设置合理的电路保护根据系统要求,本人分以下几个步骤进行了设计:1总体模块的布局,设计以及安装;2. 弱电3. Keil 编程对板的设计与焊接;板进行调试;4对系统整体进行了分析,总结。第 2 章相关技术简介原理简介232.1 交流伺服电机的交流伺服电相似.其定子的构造基本上与电容分相式单相异步电定子上装有两个位置互差 90的绕组,一个是励磁绕组 Rf,它始终接在交流电压Uf 上;另一个是绕组 L,联接信号电压 Uc。所以交流伺服电又称两个伺服电。交流伺服电的转子通常做成鼠笼式,但为了使伺服

14、电具有较宽的调速范围、线性的机械特性,无“自转”现象和快速响应的性能,它与普通电比,应具有转子电阻大和转动惯量小这两个特点。相交流伺服电在没有电压时,定子内只有励磁绕组产生的脉动磁场,转子静止不动。当有电压时,定子内便产生一个旋转磁场,转子沿旋转磁场的方向旋转,在负载恒定的情况下,电的转速随电压的大小而变化,当电压的相位相反时,伺服电将反转。交流伺服电的工作原理与分相式单相异步电虽然相似,但前者的转子电阻比后者大得多,所以伺服电与单机异步电相比,有三个显著特点:1、起动转矩大;2、运行范围较广;3、无自转现象。交流伺服电运行平稳、噪音小。但特性是非线性,并且由于转子电阻大,损耗大,效率低,因此

15、与同容量直流伺服电相比,体积大、重量重,所以只适用于 0.5-100W 的小功率系统。与普通电机一样,交流伺服电机也由定子和转子。定子上有两个绕组,即励磁绕组和绕组,两个绕组在空间相差 90电角度。伺服电机内部的转子是永磁铁,驱动 gS的 UVW 三形成电磁场 转子在此磁场的作用下转动,同时电机自带的编码器反馈信号给驱动器,驱动器根据反馈值与目标值进行比较 调整转子转动的角度。伺服电机的精度决定于编码器的精度。交流伺服电机的工作原理和单相感应电无本质上的差异。但是,交流伺服电机必须具备一个性能,就是能克服交流伺服电机的所谓“自转”现象,即无信号时,它不应转动,特别是当它已在转动时,如果信号消失

16、,它应能立即停止转动。而普通的感应电转动起来以后,如信号消失,往往仍在继续转动。当电机原来处于静止状态时,如绕组不加电压,此时只有励磁绕组通电产生脉动磁场。可以动磁场看成两个圆形旋转磁场。这两个圆形旋转磁场以同样的大小和转速,向相反方向旋转,所建立的正、反转旋转磁场分别切割笼型绕组(或杯形壁)并感应出大小相同,相位相反的电动势和电流(或涡流),这些电流分别与各自的磁场作用产生的力矩也大小相等、方向相反,力矩为零,伺服电机转子转不起来。一旦系统有偏差信号,绕组就要接受与之相对应的电压。在一般情况下,电机内部产生的磁场是椭圆形旋转磁场。一个椭圆形旋转磁场可以看两个圆形旋转磁场起来的。这两个圆形旋转

17、磁场幅值不等(与原椭圆旋转磁场转向相同的正转磁场大,与原转向相反的反转磁场小),但以相同的速度,向相反的方向旋转。它们切割转子绕组感应的电势和电流以及产生的电磁力矩也方向相反、大小不等(正转者大,反转者小)力矩不为零,所以伺服电机就朝着正转磁场的方向转动起来。为使交流伺服电机具有信号消失,立即停止转动的功能,把它的转子电阻做得特别大,使它的临界转差率 Sk 大于 1。普通的两相和三相异步电正常情况下都是在对称状态下工作,不对称运行属于故障状态。而交流伺服电机则可以靠不同程度的不对称运行来达到目的。这是交流伺服电机在运行上与普通异步电的根本区别。就伺服驱动器的响应速度来看,转矩模式运算量最小,驱

18、动器对信号的响应最快;位置模式运算量最大,驱动器对信号的响应最慢。伺服电机的方式下面三类:1.转矩:转矩方式是通过外部模拟量的输入或直接的地址的赋值来设定电机轴对外的输出转矩的大小。2.位置:位置模式一般是通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度,也有些伺服可以通过通讯接对速度和位移进行赋值。由于位置模式可以对速度和位置都有很严格的,所以一般应用于装置。应用领域如数控机床、印刷机械等等。3.速度模式:通过模拟量的输入或脉冲的频率都可以进行转动速度的,在有上位装置的外环 PID时速度模式也可以进行,但必须把电机的位置信号或直接负载的位置信号给上位反馈以做运算用

19、。位置模式也支持直接负载外环检测位置信号,此时的电机轴端的编码器只检测电机转速,位置信号就由直接的最终负载端的检测装置来提供了,这样的优点在于可以减少中间传动过程中的误差,增加了整个系统的精度。2.2 STM32 简介STM32 系列基于专为要求高性能、低成本、低功耗的应用专门设计的 ARM Cortex-M3 内核。按性能分成两个不同的系列:STM32F103“增强型”系列和 STM32F101“基本型”系列。增强型系列时钟频率达到 72MHz,是同类中性能最高的;基本型时钟频率为 36MHz,以 16 位的价格得到比16 位 大幅提升的性能,是 16 位 用户的最佳选择。两个系列都内置 3

20、2K 到 128K 的闪存,不同的是 SRAM 的最大容量和外设接口的组合。时钟频率72MHz 时,从闪存执行代码,STM32 功耗 36mA,是 32 位市场上功耗最低的产品,相当于 0.5mA/MHz。STM32 处理器功能更强,数据处理能力,能力都比较强。而且其使用方便,对于高精度的伺服电机更好。第 3 章系统硬件设计3.1 总体设计本文介绍了基于 ARM系统采用 STM32 芯的交流伺服系统设计。该,经 keil 编程伺服电机驱动器,从而对电机的转速位移进行片作为智能化,精确化。以分为弱电电路,强电电路两大部分,弱电电路指 ARM部分,强电模块主要是伺服器通电部分。弱电/强电显示STM

21、32伺服电机伺服器键盘3.2 硬件布局设计由于交流伺服系统中的模块较多,为了更好的调试,我们按如下布局进行排布。行行程程启动按钮 (绿)停止按钮 (红)STM32 及显示运行灯(绿)电源灯(红)伺服电机ARM板直流继电器交流接触器空开正反转开关伺服控制器接交流电3.3 强电电路连线设计4强电部分的连线ON红交 流空开A1绿接 触绿红器A23.4 ARM板电路图A5 伺服电机的电源是 220V 交流点,而 ARM板的供电电源是 12V,为了防止 A5 伺服电机 220V 烧毁 ARM板,我们采用光电,我们用 PC817 光耦来实现强电与弱电的。测速模块,我们采用 LM324,利用伺服器X4 口的

22、 OA+,OA-,OB+,OB-,OZ+,OZ-来检测 A,B,Z 脉冲。原理图如下:PCB 如图:第 4 章系统软件设计4.1 交流伺服系统程序框图系统运行时,我们首先要进行伺服准备,这样,我们发脉冲,电机才会有反应。测速,我们直接接收伺服电机的编码器上的 ABZ 的脉冲。以下是程序流程图。开始伺服准备发脉冲接收编码盘脉冲并显示N是否Y设置点启动返回结束。设置速度并启动4.2 pwm 调速原理这里指利用单片机部分 I/O 口具有输出 pwm 信号的功能,在不改变pwm 方波周期的前提下,通过软件的方法调整单片机的 pwm寄存器来调整 pwm 占空比,从而发出相应频率的脉冲,从而电机转速,详细

23、程序实现见附录。4.3 测速方式及原理5光电编码器的输出脉冲信号有三种测速方法。法是在固定的时间间隔内对脉冲进行计数,实际上测量的是脉冲的频率,这种方法称为 M 法;另法是计算两个脉冲之间的时间间隔,亦即脉冲信号的周期,这种方法称为 T 法;综合以上两种方法则产生第三种方法 M/T 法。4.3.1 M 法数字测速M 法测速的原理如图 12.22 所示,因为只有取边沿信号才能保证测量时间的准确性,图中的脉冲信号是传感器输出信号经处理后得到的边沿信号。若传感器与某转轴连接且每转产生 N 个脉冲,在时间间隔 Ti 内对传感器输出的脉冲进行计数并得到计数值 m1,那么则可推算出转速为 n=60m1/N

24、T1(rpm)M 法测速的分辨率为可测得的转速最小间隔,显然这个指标等于一个脉冲计数所导致的转速差/由上式可知,在传感器每转脉冲数 N 和时间间隔 T1 保持不变的前提下,M法数字测速的分辨率与转速无关。显然,在速度变化的测速过程中需要保持时间间隔 Ti 的准确性和稳定性。M法测速在高速下可得到大的 mi 而导致小的相对误差。而在低速下由于计数少而产生大的相对误差。由此可见 M 法上适合于高速的测量而不适合低速的测量。采用 M 法所得到的速度实际上并不是检测时间到达时的瞬时速度,而是过去T1 时间内瞬时速度的平均值。因此作为闭环速度中的反馈环节,M 法测速具有滞后特性并有可能影响系统的性能。在

25、每转脉冲数 N 不变的情况下,如果想要提高转速的分辨率和降低相对误差就要增加检测时间 T1。但是统的性能又需要减少检测时间以提高反馈环节的实时性,这两方面的要求是互相的,解决这个的出路是采用每转脉冲数 N 较大的传感器:4.3.2T 法数字测速T 法使用传感器输出脉冲的沿来启动和结束计数器对一个基准时钟的计数,然后利用这个计数值来推算转速。如图 12. 23 所示,基准时钟发出计数脉冲,传感器输出脉冲的前沿的作用是结束一个计数器的本次计数并启动下次计数。设本次计数值为 m2。在基准时钟的频率 fc 准确稳定的前提下,m2 实际上是传感器输出脉冲周期 T2 的度量,那可以用下式来计算转速 n=6

26、0fc/Nm2(rpm)T 法的分辨率等于一个基准时钟所导致的转速差由上式可知,T 法测速在低速时的分辨率优于高速时。T 法的相对误差同样取决于一个计数脉冲,应该是 l/m2。显然转速低时 m:较大,导致相对误差较小,也说明了 T 法适用于低速的测量。4.3.3 M/T 法数字测速从原理上 M 法和 T 法都可以折算出转速,但是从转速测量的精度、分辨率和实时性考虑,前者适用高速下的转速测量,而后者则适合低速下的转速测量,而综合了两者特点的则是 M/T 法。设置两个计数器分别对传感器输出和基准时钟计数,得到计数 mi 和 m2。若被测轴在 T 时间内转过角度 X,则有 X=2m1/N(rad)而

27、经基准时钟计数得到的时间 T 为 T=m2/fc则可得到转速为 n=60X/2T=60m1/NT=60fcm1/Nm2=Km1/m2K=60fc/N一般设计时钟频率远远高于传感器输出频率,因此 M/T 法的分辨率主要取决于 fe,应为 R=Km1/m2(m2-1)从 M/T 法的原理可知,在最低的转速下这种方法也可以保证检测传感器输出脉冲的一个完整周期。如果在低速下 T1 小于传感器的脉冲周期,那么检测时间丁就等于传感器输出脉冲的周期。如果 T1 大于传感器的脉冲周期,那么检测时间丁小于 2T1。这种方法在高速和低速下都可以进行较为准确的速度检测。4.4程序设计显示,按键,我们使用带触摸的液晶

28、显示器。程序见附录。第 5 章系统调试及注意事项5.1 系统的调试系统上电后,开启启动按钮,对伺服电机供电,按下液晶屏启动键,电机转动;按下正反转,可以实现正反转;按下加,可以实现加;同时,可以测速,进一步,可以启停。5.2 系统的注意事项1.对于伺服器,应该先对 L1C,L2C 通电,即将之连接到空气开关;然后再对 L1,L2 通电,即将之连接到交流接触器输出端。2.X4 接口焊接时,要用热塑套,防止启动后铜线相互接触,烧毁伺服器。3.若 X4 接口安常规方法不能驱动电机,我们可以反过来尝试一下。即“高”接“0”,“0”接“负”。4.对于伺服器,在 打开空开开关后,应立即按下启动按钮,防止出

29、现上电错误。器第六章小结经历了整整 3 周的时间,我们从刚开始课程设计的茫然,到后来一步步完成各个部分,各个模块的设计,安装,让我们真正意义上进行了一次从硬件到软件, 从强电到弱电的综合设计。让我们从心底感到自豪。特别是当电机转动,可以实现相关功能时,作为设计者的我们,心中阵阵悸动。这 3的。充实的,也是忙碌3 周的时间,我们对于运动系统有了一个全新的认识。同时加强了电拖,电力电子,运动3 门课程的理解,认识。强化了对于 ARM,对于 STM32 的应用。完成了这次的课程设计,也是对我大三上学期的一个检验。下学期,我将更加努力,执着着,努力着。必将或有收获。致,谢首先我在这里要感谢,是他们在我

30、们课程设计过程中,时时刻刻给予我们帮助。忙前忙后,对于每个细节都要求很严。其次我要感谢 3+1 班这个集体,没有这么一个集体的氛围,我无法在这个时候静下心来搞这些东西。最后我要感谢这期间,给予我帮助的所有人。一路来的帮助,鼓励和支持,让我坚持了下来,收获了接下来,我将继续努力。参考文献1 基于 S7-200 伺服电机系统设计.西安邮电大学毕业设计,20122文,200934.基于 ARM 的伺服电机器设计.河北工业大学毕业生毕业论.电机与拖动基础.浙江大学,2010.电力电子技术.,2009,2008,2009,机械工业56陈电力拖动自动系统机械工业.ARM接术M.北京:7.ARM系统M.广州

31、:北京航空航天大学,2008附录 1附录 21.液晶屏显示/*stm32_ili9320_show.c*/ voidLCD_show(void)ili9320_Clear(Cyan); GUI_Rectangle(0,0,160,240,Magenta,Blue);GUI_Text(40,0,自动化,6,White,Red);GUI_Text(90,0,112,White,Red);GUI_ GUI_Text(115,0,班,2,White,Red);_Text(60,30,第一组,6,White,Red);GUI_ GUI_ GUI_Text(10,80,_Text(70,80,_Text(

32、115,80,6,DGREEN,WHITE);,4,DGREEN,WHITE);,4,DGREEN,WHITE);GUI_Text(45,130,基于,4,LGRAY,DGRAY);GUI_Text(85,130,ARM,LGRAY,DGRAY);GUI_ GUI_Text(50,160,的,6,LGRAY,DGRAY);_Text(30,190,交流伺服系统,12,LGRAY,DGRAY);GUI_Text(20,220,指导,8,White,Red);GUI_Text(85,220,:,White,Red);GUI_Text(90,220,6,White,Red);GUI_/* ,12,Y

33、ELLOW 110,130,GUI_ ,12,YELLOW 110,150,GUI_ ,12,YELLOW 110,170,GUI_ ,12,YELLOW 110,190,GUI_ ,12,YELLOW 110,210,_Text(160,0,初始参数设置,12,YELLOW ,RED);GUI_Text(0,130,指令脉冲输入,RED);GUI_Text(100,130,:,YELLOW ,4,MAGENTA ,BLACK);,RED);GUI_Text(_Text(0,150,伺服输入_Text(,RED);GUI_Text(100,150,:,YELLOW ,4,MAGENTA ,BL

34、ACK);_Text(0,170,RED);GUI_Text(100,170,:,YELLOW ,4,MAGENTA ,BLACK);,RED);GUI_清除输入_Text(,RED);GUI_Text(0,190,正向驱动输入_Text(,RED);GUI_Text(100,190,:,YELLOW ,4,MAGENTA ,BLACK);,RED);GUI_Text(0,210,反向驱动输入_Text(,RED);GUI_Text(100,210,:,YELLOW ,4,MAGENTA ,BLACK);,RED);GUI_GUI_ ,12,YELLOW 270,130,*/GUI_ ,12,

35、YELLOW_Text(160,130,伺服准备输出_Text(,RED);GUI_Text(260,130,:,YELLOW ,4,MAGENTA ,BLACK);,RED);GUI_Text(160,70,初始速度输入,RED);GUI_Text(260,70,:,YELLOW,RED);GUI_Text(270,70,00000,MAGENTA ,BLACK);GUI_Text(160,110,实际速度检测,12,YELLOW ,RED);GUI_Text(260,110,:,YELLOW ,RED);GUI_Text(270,110, 00000,MAGENTA ,BLACK);GUI

36、_Rectangle(160,170,210,200,BLUE,1); GUI_Rectangle(270,170,320,200,BLUE,1);GUI_Rectangle(212,170,240,200,BLUE,1); GUI_Rectangle(242,170,268,200,BLUE,1);GUI_Rectangle(160,210,240,240,GREEN,1);GUI_Rectangle(242,210,320,240, RED ,1);GUI_ GUI_GUI_ GUI_GUI_ GUI_Text(215,175,正,2,YELLOW,BLUE);_Text(245,175,

37、反,2,YELLOW ,BLUE);_Text(161,175,速度加,6,YELLOW,BLUE);_Text(271,175,速度减,6,YELLOW ,BLUE);_Text(180,220,启动,4,YELLOW ,GREEN);_Text(262,220,停止,4,YELLOW ,RED);GUI_Rectangle(160,130,320,150,BLACK,1);GUI_Text(180,135,设置,8,White ,BLACK);void Piture_Show(void)ili9320_Clear(Cyan);GUI_Text(60,60,设置圈数,8,YELLOW ,GR

38、EEN);GUI_Text(130,60,:,YELLOW ,GREEN); GUI_Rectangle(242,210,320,240, RED ,1);GUI_Text(262,220,返回,4,YELLOW ,RED);GUI_Rectangle(160,170,210,200,BLUE,1); GUI_Rectangle(270,170,320,200,BLUE,1);GUI_ GUI_Text(181,175,加,6,YELLOW,BLUE);_Text(291,175,减,6,YELLOW ,BLUE);2.PWM,中断程序/*TIM.C*/ #include stm32f10x.

39、h#include TIM.hstatic void NVIC_Configuration(uint8_t NVIC_PreemptionPriority,uint8_tNVIC_SubPriority,uint8_tNVIC_Channel,uint32_tNVIC_Group)NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_Group);NVIC_InitStructure.NVIC_IRQChannel = NVIC_Channel; NVIC_InitStructure.NVIC_IRQChannelP

40、reemptionPriorityNVIC_PreemptionPriority; NVIC_InitStructure.NVIC_IRQChannelSubPriority = NVIC_SubPriority; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);=/*定时器 3*/PWM 初始化void TIM3_PWM_init_us( uint16_t PWM)TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; TIM_OCInitType

41、Def TIM_OCInitStructure;/* TIM3 clock enable */PCLK1 经过 2 倍频后作为 TIM3 的时钟源等于 72MHzRCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);/* Time base configuration */ TIM_TimeBaseStructure.TIM_Period =144 ;1000 次,为一个定时周期TIM_TimeBaseStructure.TIM_Prescaler =PWM ; 1MHz/当定时器从 0 计数到 999,即为/设置预分频:72 分频,即为TIM_

42、TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;系数:不分频/ 设置时钟分频TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/* PWM1 Mode configuration: Channel1 */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;/配置为 PWM 模式 1TIM_OCInitStructure.

43、TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 72;/设置跳变值,当计数器计数到这个值时, 电平发生跳变TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;小于 CCR1_Val 时为高电平/当定时器计数值TIM_OC1Init(TIM3, &TIM_OCInitStructure);/使能通道 1TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);/* TIM3 enable count

44、er */TIM_Cmd(TIM3, ENABLE);/使能定时器 3/*定时器 2to4 初始化*/*TIM_Period-1000TIM_Prescaler-71 -中断周期为 1ms*/void TIM2to4_init_us(TIM_TypeDef* TIMx, uint16_t reload_time)TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;switch(uint32_t)TIMx) case (uint32_t)TIM2:ENABLE); /* 使能定时器时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Peri

45、ph_TIM2, NVIC_Configuration(2,2,TIM2_IRQn,NVIC_PriorityGroup_2); break;/抢占 1,子优先级 3,组 2case (uint32_t)TIM3:ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , NVIC_Configuration(2,2,TIM3_IRQn,NVIC_PriorityGroup_2); break;case (uint32_t)TIM4:ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , NVIC_

46、Configuration(2,2,TIM4_IRQn,NVIC_PriorityGroup_2); break; default:break;TIM_DeInit(TIMx);TIM_TimeBaseStructure.TIM_Period=reload_time; /* 自动重装载寄存器周期的值(计数值) */TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1); 72M/72 */TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_Counte

47、rMode=TIM_CounterMode_Up;*/TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);/* 时钟预分频数/* 采样分频 */* 向上计数模式TIM_ClearFlag(TIMx, TIM_FLAG_Update);/* 清除溢出中断标志*/TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE); TIM_SetCounter(TIMx,/* 清除计数器*/ TIM_Cmd(TIMx, ENABLE);0);/* 开启时钟 */* 外部中断初始化*/voidEXTIx_init(uint8_tGPIO_Port

48、SourceGPIOx,uint8_tGPIO_PinSourcex,EXTITrigger_TypeDef EXTI_Trigger)EXTI_InitTypeDef EXTI_InitStructure;/* config the extiline clock and AFIO clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/* config the NVIC */ if(GPIO_PinSourcex 5) NVIC_Configuration(2, NVIC_PriorityGroup_2); else if(GP

49、IO_PinSourcex NVIC_Configuration(2, else NVIC_Configuration(2,/*配置 0-4 外部中断*/2,EXTI0_IRQn+GPIO_PinSourcex,10) /* 配置 5-9 外部中断*/2, EXTI9_5_IRQn, NVIC_PriorityGroup_2);/* 配置 10-15 外部中断*/ 2,EXTI15_10_IRQn,NVIC_PriorityGroup_2);/* EXTImode config */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSourc

50、e13); EXTI_InitStructure.EXTI_Line = (1GPIO_PinSourcex); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger; /上升下降降沿中断EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);/*EXTI_PA0.c*/#include EXTI_PA0.hEXTI_InitTypeDef GPIO_InitTyp

51、eDefNVIC_InitTypeDefEXTI_InitStructure; GPIO_InitStructure;NVIC_InitStructure;void EXTI_Config(void)/* Enable GPIOA clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/* Configure PA.00 pin as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO

52、_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);/* Enable AFIO clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);/* Connect EXTI0 Line to PA.00 pin */GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);/* Configure EXTI0 line */ EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Inter

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论