基于STM32和L6208的步进电机控制系统
基于STM32和L6208的步进电机控制系统

总体系统框图如图 1 所示:
1
图 1 系统框图
2.1 控制模块选择
方案一:采用 89C51 作为步进电机控制器。经典 51 单片机具有价格低廉、使用简单等 优点。但其运算速度低,功能单一,RAM、ROM 空间小,不稳定等特点。
方案二:采用 STM32F103XX 作为步进电机控制器。STM32 通过寄存器模式,寻址方 式灵活,RAM 和 FLASH 容量大,运算速度快、低功耗、低电压等,且通过 TIM2 的输出比 较模式来控制步进电机以连续周期的 50%和一个可变频率。DMA 控制器可用来改变时钟周 期,Systick 定时器灵活地产生中断。
#endif /* RotationDirection_CCW */
#ifdef Half_Step Stepper_SelectMode(Stepper_Half);
#endif /* Half_Step */
#ifdef Full_Step Stepper_SelectMode(Stepper_Full);
型双 H 驱动桥,且为驱动双极步进电机而专门优化的全集成驱动器,从而大幅度减少了电
2
机控制应用所需的外围元器件的数量。此芯片产品采用 8V~52V 的单电源电压,所有的逻 辑输入引脚都配有降低噪声敏感度的磁滞功能,而且兼容 TTL/CMOS/CMOS 3.3V 电压。 为全面保护对地短路和每个电桥的两个相位之间的短路,芯片内置过流检测电路(OCD)。 OCD 电路用于监测流经上桥臂功率 DMOS 晶体管的电流,因为没有外部电阻器,所以也就 降低了功耗,符合节能要求。此外,为保证对 IC 进行的全面的保护,芯片上还集成了其它 的特殊电路:监测电源电压的低压封锁保护以及一旦结温超过 165℃时关闭所有功率输出的 热保护功能。这个器件能够适应各种应用,包括微步进应用。
基于STM32的两相混合式步进电机闭环控制系统的研究

基于STM32的两相混合式步进电机闭环控制系统的研究步进电机具有结构简单、工作可靠、驱动器成本低和无位置累计误差等优点,在数控机床、雕刻机、机器人和计算机打印设备等多个领域中得到了广泛的应用。
近年来,随着现代工业的快速发展和相关技术的不断提升,人们对步进电机控制系统也提出了更加严苛的要求。
目前市面上的步进电机主要以两相混合式步进电机为主,但是由于其自身存在的固有缺陷以及传统控制方式多采用开环运行,这在一定程度上使两相混合式步进电机控制系统在工业中的应用受到制约。
因此,研究两相混合式步进电机闭环控制系统势在必行。
首先,本文对步进电机控制系统的研究现状进行了阐述,介绍了两相混合式步进电机的结构和工作原理。
在合理的假设条件下,详细推导了两相混合式步进电机在两相静止坐标系下的数学模型,通过坐标变换,得到dq旋转坐标系下的数学模型,并选用_di(28)0的矢量控制策略应用在被控对象闭环控制中。
其次,在两相混合式步进电机闭环控制系统中,位置和速度控制器的优劣将直接制约整个控制系统的性能。
本文针对传统PI控制器的不足,引入反步控制器。
根据数学模型,重点推导和设计了速度反步控制器和位置比例(P)控制器。
同时,在Matlab/Simulink软件环境下搭建了速度反步控制器、位置P控制器以及两相混合式步进电机的仿真模型。
在相同的条件下与传统PI控制器进行仿真对比分析。
仿真结果表明,本文提出和设计的位置P和速度反步控制算法在稳态性能、动态特性、鲁棒性和精度方面较为优越。
最后,为了证明算法的可行性和实用性,以STM32芯片为核心,完成对两相混合式步进电机闭环控制系统的硬件电路设计,结合硬件电路,又完成了软件设计。
同时,搭建了实验控制平台,并对本文提出的控制策略与传统PI控制器进行比较。
实验结果进一步表明,本文提出和设计的位置P和速度反步控制算法在两相混合式步进电机闭环控制中更具优越性。
基于STM32多步进电机驱动控制系统设计

私
, 卜
I ,矾’Fra bibliotek 第 4期
I n s t r u me n t T e c h n i q u e a n d S e n s o r
N o . 4
基于 S T M3 2多步 进 电机 驱 动控 制 系统 设计
廖 平, 韩伟伟
4 1 0 0 8 3 ) ( 中南大学 高性能复杂制造国家重点实验室 , 湖南长沙
摘要 : 在 不同的控 制场合 下, 需要不 同的控 制电路控 制步进 电机驱动器 , 而不 同的控制 电路对步进 电机 的工作性 能有 很 大的影响 , 为此设计一款 集微控制 器和驱动芯片 于一体 的多轴 多细分步进 电机驱动控制 器来 实现驱动 和控 制的 完美结
合 。驱动控制 器以 S T M3 2 F 1 0 3 Z E T 6为 主 控 制 器 , L V 8 7 2 7为 驱 动 芯 片 , 采用 U S B进 行 主 控 制 器 与上 位 机 的数 据 通 信 , 根 据
t ol r wi t h d i fe r e nt ̄e q ue n c y PW M .M o d e l i n g,t h e o r e t i c a l a n a l ys i s a nd s i mu l a t i on o f t h e who l e s y s t e m we r e e s t a bl i s h e d ba s e d o n t he
De s i g n o f Dr i v e Co n t r o l S y s t e m o f Mu l t i p l e S t e p pe r Mo t o r s Ba s e d o n S TM 3 2
基于STM32的步进电机控制系统

基于STM32的步进电机控制系统沈阳航空航天大学2010年6月摘要本文的主要工作是基于STM32步进电机控制系统的设计。
随着越来越多的高科技产品逐渐融入了日常生活中,步进电机控制系统发生了巨大的变化。
单片机、C语言等前沿学科的技术的日趋成熟与实用化,使得步进电机的控制系统有了新的的研究方向与意义。
本文描述了一个由STM32微处理器、步进电机、LCD显示器、键盘等模块构成的,提供基于STM32的PWM细分技术的步进电机控制系统。
该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对步进电机的速度及转动方向进行控制,并且通过LCD显示出数据。
结果表明该系统具有结构简单、工作可靠、精度高等特点.关键词:STM32微处理器;步进电机;LCD显示;PWM信号;细分技术AbstractAs well as the high-tech products gradually integrated into the daily life,servo control system has undergone tremendous changes.SCM and C language of the frontier disciplines such mature technology and practical,steering control system is a new research direction and meaning.This paper describes a STM32 microprocessors, steering, LCD display and keyboard, Based on the STM32 servo control system of PWM signal,This system uses STM32 microprocessor as the core, MDK in the environment, according to the keyboard input , STM32 produce periodic PWM signal, with this signal to the velocity and Angle of steering gear control, and through the LCD display data. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system.Keywords:STM32 microprocessors; Steering system; LCD display;pulse width modulation signal;Subdivide technology目录第1章绪论 (1)1.1 课题背景 (1)1.2 课题目标及意义 (2)1.3 课题任务及要求 (3)1.4 课题内容分析与实现 (3)1.5 课题论文安排介绍 (3)第2章步进电机控制系统的总体方案论证 (5)2.1 总体方案 (5)2.2 步进电机控制系统硬件方案 (5)2.3 步进电机控制系统软件方案 (6)第3章系统的硬件设计 (7)3.1 STM32开发板简介 (7)3.2 步进电机模块 (8)3.2.1 步进电机驱动模块 (8)3.2.2 步进电机驱动控制模块 (10)3.2.3 步进电机的一些特点 (11)3.2.4 步进电机的一些基本参数 (12)3.2.5 步进电机的驱动方法 (13)3.3 A/D转换模块 (13)3.3.1 模拟/数字转换(ADC)介绍 (13)3.3.2 模拟/数字转换(ADC)主要特性 (13)3.3.3 模拟/数字转换(ADC)功能描述 (14)3.4 LCD显示模块 (16)3.5 硬件电路 (17)第4章控制系统软件设计 (18)4.1 控制系统软件设计步骤 (18)4.2 Keil for ARM软件开发环境 (19)4.3 PWM细分技术简介 (20)4.3.1 PWM细分技术简介 (20)4.3.2 PWM细分技术驱动原理 (20)4.3.3 PWM细分调压调速原理 (22)4.4 主程序设计 (23)4.5 各模块程序设计 (25)4.5.1系统初始化 (25)4.5.2A/D转换程序设计 (26)4.5.3 PWM细分程序设计 (29)4.5.4电机控制程序设计 (30)4.5.5 LCD显示程序设计 (32)第5章步进电机控制系统综合调试与分析 (33)5.1 硬件电路调试 (33)5.2 软件电路调试 (34)5.3 系统联调结果与分析 (34)结论 (35)社会经济效益分析 (36)参考文献 (37)致谢 (38)附录I 电路原理图 (39)附录Ⅱ程序清单 (41)附录IV 元器件清单 (56)第1章绪论随着电力电子技术、微电子技术、控制理论以及永磁材料的快速发展,步进电机得以迅速发展。
基于STM32的多步进电机控制系统研究

驱动器细分倍数、 电机运行总步数、 PWM 脉冲总 个数分别为 n、 N、 P, 则
P i = N i = 200 n iQ i = 200n iL i qi (i= 1 , 2)
步进电机每一次目标位置的移动 , 都需要经过启 动、 加速、 高速、 减速和制动过程。速度大小是由 PWM 脉冲信号频率决定的 , 所以完成目标位置移动的过程 [7 , 8] 就是不断调整 P WM 脉冲信号频率的过程 。 如果两台步进电机每次调整的 P WM 信号频率运 行的时间 $t 相同 , 同时启动后的加速、 高速、 减速整个
Q i = L i qi ( i = 1, 2 )
在程序设计中, 通过计算并设定 M 1R , M 2R , $ tR , 即 可实现对步进电机的同步控制。同样的方法也可以实 现对多台步进电机的同步控制。 2 . 2 程序流程控制 本系统中要求步进电机所控制的设备从初始位置 开始运行。但由于突发情况的存在 , 步进电机的实际 位置相对于初始位置会有一定位移。这就要求软件系 统中有回零功能 , 以控制步进电机拖动设备回到初始 位置。 STM 32 主程序完成初始化后 , 通过硬件中断来 触发回零程序。然后采用串口中断的方式不断接收上 位机 指令, 在中断服 务程序中 把指令中 的距离信 息 L 1、 L 2 转化为电机运行步数 N 1、 N 2, 然后通过 设定的 M 1R , 求出 M 2R 、 $tR , R = 1 , 2 , ,, 6 , 把 M 1R 、 M 2R 分别赋 给两个 T I M 并使能后产生两个 PWM 信号 , 且同时延 时 $ tR , 用于控制电 机速度的大小。令: $T = RE $tR , =1 电机运行 $ T 后 , 读取位置反馈信息并转化为电机实 际运行步数 , 与控制指令步数比较, 进行偏差控制。如 果偏差 $L 1、 $L 2超出规定值, 则程序 就会把 $L 1、 $L 2
基于STM32的步进电机转速控制实验设计

度的控制。通过旋动电位器, 可以直观地感受到, 随着 阻值的增加与减小, 电机运行速度相应加快与减慢 [ 9] 。 2. 2 显示实验
显示实验分为两个功能: 电机工作状态显示与 电机运行速度显示。通过拨动开关对显示功能进行 选择。当开关处于工作状态显示, MCU 控制步进电 机旋转方向的同时, 将该信号发送给数码显示模块, 从而实时显示当前电机工作状态; 当开关处于运行 速度显示, M CU 根据定时器中配置的脉冲频率和步 进电机的步距角, 可以计算出相应旋转时间与角度, 从而显示电机的运行速度。
Ab stract: Based on Cortex - M 3 kerne,l STM 32 has dist inguished feature such as low - pow er, abundant interna l per ipherals, quick processing speed and so on. It s' typically applied in data acqu isition system. Step m otor ro tational speed contro l design based on STM 32 is introduced in this paper. Comparing w ith tradit iona l sing lech ip, it hasm any advantages such as fast processing and perfect func ion. STM 32 m an ipulate step m oto r acco rd ing to senso r signa l and disp lay operating state. Th is article has g iven deta ils in hardw are design and softw are procedure, attach ing part o f exper im ent descrip tion. Th is experim ent system has proved to be stable and reliab le through practice, w hich is supposed to be great effect of experim en t teaching. Key w ord s: STM 32; Cortex- M 3; PWM; 号调理电路
基于STM32的步进电机控制系统-自动化本科毕业设计

基于STM32的步进电机控制系统-自动化本科毕业设计本文简要介绍了自动化本科毕业设计的主题和目的,并概述了STM32步进电机控制系统的重要性和应用领域。
步进电机控制系统是现代自动化技术中的重要组成部分,广泛应用于各个领域,如机械加工、电子设备、机器人控制等。
该系统能够实现精确控制和位置定位。
然而,传统的步进电机控制系统存在一些限制,如运行效率低、系统稳定性差等。
因此,基于STM32的步进电机控制系统应运而生。
本科毕业设计的主题是基于STM32的步进电机控制系统的设计与实现。
通过使用STM32单片机,设计一个高效稳定的步进电机控制系统,能够实现精确的位置控制和运动控制。
该系统具有较高的运行效率和稳定性,能够应用于各种自动化领域,提高生产效率和产品质量。
关键词:步进电机控制系统,STM32,自动化,本科毕业设计步进电机是一种常见的电动机类型,具有特定的原理和工作方式。
它在自动化领域有广泛的应用。
本文将讨论步进电机的原理和工作方式,并介绍选择基于STM32的步进电机控制系统作为本科毕业设计主题的原因。
步进电机是一种将电脉冲信号转换为离散步进运动的电动机。
它通过电磁铁的启动顺序和定向,使得转子以角度的方式进行运动。
步进电机的原理基于电磁铁的电磁效应和磁性材料的性质来实现。
步进电机在自动化领域有许多应用。
例如,步进电机常被用于精密定位系统、数控机床、印刷机、纺织机械等领域。
它们的精确度、可靠性和可编程性使它们成为许多自动化系统中的理想选择。
选择基于STM32的步进电机控制系统作为本科毕业设计的主题有以下原因:STM32是一种广泛应用的单片机系列,具有强大的计算和控制能力。
STM32具有丰富的外设资源,能够满足步进电机控制系统的需求。
STM32提供了方便的开发环境和丰富的开发工具,使得设计和开发步进电机控制系统更加简便和高效。
基于STM32的步进电机控制系统可以在实践中验证和应用步进电机控制的原理和技术,对于学生来说具有一定的教育意义。
基于stm32的步进电机控制系统设计与实现

基于stm32的步进电机控制系统设计与实现基于STM32的步进电机控制系统设计与实现1. 概述步进电机是一种非常常见的电动机,在许多自动化系统和工控设备中得到广泛应用。
它们具有精准的定位能力和高效的控制性能。
本文将介绍如何使用STM32微控制器来设计和实现步进电机控制系统。
2. 硬件设计首先需要确定步进电机的规格和要求,包括步距角、相数、电流和电压等。
根据步进电机的规格,选择合适的驱动器芯片,常见的有L298N、DRV8825等。
接下来,将选定的驱动器芯片与STM32微控制器相连。
通常,步进电机的控制信号需要使用到微控制器的GPIO引脚,同时由于步进电机的工作电流比较大,需要使用到微控制器的PWM输出信号来调节驱动器芯片的电流限制。
除此之外,还需要一个电源电路来提供驱动器和步进电机所需的电源。
可以选择使用一个电源模块,也可以自行设计电源电路。
3. 软件设计软件设计是步进电机控制系统的核心部分,主要包括步进电机驱动代码的编写和控制算法的实现。
首先,需要在STM32的开发环境中编写步进电机驱动代码。
根据所选的驱动器芯片和步进电机规格,编写相应的GPIO控制代码和PWM输出代码。
同时,可以添加一些保护性的代码,例如过流保护和过热保护等。
接下来,需要设计和实现步进电机的控制算法。
步进电机的控制算法通常是基于位置控制或速度控制的。
对于位置控制,可以使用开环控制或闭环控制,闭环控制通常需要使用到步进电机的编码器。
对于开环控制,可以通过控制步进电机的脉冲数来控制位置。
通过控制脉冲的频率和方向,可以实现步进电机的转动和停止。
这种方法简单直接,但是定位精度有限。
对于闭环控制,可以使用PID控制算法或者更高级的控制算法来实现位置控制。
通过读取步进电机的编码器反馈信号,可以实时调整控制输出。
这种方法可以提高定位精度和抗干扰能力,但是算法实现相对复杂。
4. 系统实现在完成硬件设计和软件设计后,可以进行系统的调试和实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32和L6208的步进电机控制系统摘要:本文介绍了步进电机的基本工作原理及控制方法,通过对ARM公司的STM32F103XX处理器Cortex-M3和ST公司步进电机驱动芯片L6208性能和驱动原理的深入分析,阐述了一种新型驱动步进电机的控制系统。
本控制系统能够实时、准确、可靠地控制两相两极的步进电机。
关键词:STM32、L6208、步进电机Abstract:This paper introduced the basic work principle and control methods, By introducing the performance of STM32F103XX and thorough analyzing the drive principle of DMOS driver for bipolar steeper motor L6208, I expounded a new control system for driving steeper motor. This control system can control bipolar stepper motor real-time, well and truly and reliably.Key words: STM32, L6208, stepper motor第1章引言本系统采用STM32F103XX微控制器驱动双极性步进电机的方法,执行整步和半步模式来控制步进电机。
用户可以选择:操作模式(整步/半步);电机旋转方式(顺时针/逆时针);当前控制模式(快速/慢速)。
这种方法使用中密度STM32F103XX微控制器和全集成两相步进电机驱动L6208,这是性价比最高和最简单的方式获得最小的CPU负载。
Cortex-M3是专门在微控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体。
本设计的主要特点:1、不需反馈器件,比其他运动控制系统成本低。
2、尤其在低速扭转力和强稳定性方面具有优势。
3、低功耗,高性能并且灵活,可用于机器人控制,机械工具转弯处,影像和其它精准的轴位置控制环境。
4、高性能的STM32F103XX微控制器驱动步进电机依赖于控制器的低计算环境。
第2章方案比较与论证总体系统框图如图1所示:图1 系统框图2.1控制模块选择方案一:采用89C51作为步进电机控制器。
经典51单片机具有价格低廉、使用简单等优点。
但其运算速度低,功能单一,RAM、ROM空间小,不稳定等特点。
方案二:采用STM32F103XX作为步进电机控制器。
STM32通过寄存器模式,寻址方式灵活,RAM和FLASH容量大,运算速度快、低功耗、低电压等,且通过TIM2的输出比较模式来控制步进电机以连续周期的50%和一个可变频率。
DMA控制器可用来改变时钟周期,Systick定时器灵活地产生中断。
基于以上分析,选择方案二。
2.2电机的选择方案一:采用直流电机。
直流电机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转;能满足生产自动化系统各种不同的特殊运行要求。
直流电机的工作状态可分为两种:开环状态和闭环状态。
直流电机工作在开环状态时,电路相对简单,但其定位性能比较差。
直流电机工作的闭环状态时,其定位性能精确,但是相对开环状态又要增加很多检测器件,使用的元器件多,电路非常复杂。
方案二:采用步进电机。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、启停的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机一个脉冲信号,电机则转过一个步距角。
因此,步进电机具有快速启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能立即使步进电机启动或反转,而且步进电机的转换精度高,驱动电路简单,非常适合定位控制系统。
基于以上分析,选择方案二。
2.3驱动模块的选择方案一:采用继电器对电动机的开和关进行控制,通过开关的切换对电机的速度进行调整。
这个方案的优点是电路较为简单,实现容易;缺点是继电器的响应速度慢、机械结构易损坏、寿命较短。
方案二:采用L6208驱动芯片。
提供了带CMOS/TTL输入逻辑以及几个保护功能的全保护型双H驱动桥,且为驱动双极步进电机而专门优化的全集成驱动器,从而大幅度减少了电机控制应用所需的外围元器件的数量。
此芯片产品采用8V~52V的单电源电压,所有的逻辑输入引脚都配有降低噪声敏感度的磁滞功能,而且兼容TTL/CMOS/CMOS 3.3V电压。
为全面保护对地短路和每个电桥的两个相位之间的短路,芯片内置过流检测电路(OCD)。
OCD电路用于监测流经上桥臂功率DMOS晶体管的电流,因为没有外部电阻器,所以也就降低了功耗,符合节能要求。
此外,为保证对IC进行的全面的保护,芯片上还集成了其它的特殊电路:监测电源电压的低压封锁保护以及一旦结温超过165℃时关闭所有功率输出的热保护功能。
这个器件能够适应各种应用,包括微步进应用。
基于上述理论分析和实际情况,拟定选择方案二。
第3章系统硬件设计3.1电机控制系统的设计RESET、ENABLE、FAST/SLOW、HALF/FULL、CLOCK、CW/CCW是控制信号的输入端,控制信号由STM32提供,可以直接将STM32与L6208的相应引脚相连。
STM32控制L6208对应引脚如表1所示:STM32引脚L6208引脚TIM2_CH1(PA0) CLOCK(PIN_1)PC2 CONTROL(PIN_13)PC3HALF/ FULL(PIN_12)PC4CW/ C C W(PIN_2)PC5 RESET(PIN_23)PC13 EN(PIN_14)表1 STM32控制L6208对应引脚电机控制系统原理图如图2所示:图2 电机控制系统原理图L6208驱动电路图如图3所示:图3 L6208驱动电路图第4章系统软件设计主程序流程图:部分流程图:图4 DMA流程图图5 系统时钟流程图第5章功能测试及结果分析第6章结束语本系统主要以STM32为主要控制芯片。
采用了L6208驱动芯片实现电机控制。
在设计过程中,力求硬件电路简单,充分发挥软件设计的优势,编程灵活方便来满足系统的要求。
参考文献[1] 李宁,《基于MDK的STM32处理器开发应用》,北京航空航天大学出版社[2] 黄智伟,《全国大学生电子设计竞赛系统设计》,北京航空航天大学出版社[3] ST公司,步进电机驱动l6208应用手册。
附录一主要元器件清单:器件名称器件数量STM32F103RBT6微控制器1片电机驱动芯片L6208N 1片42BYG102步进电机1个电阻、电容、电位器、二极管若干附录二主程序:int main(void){/* System Clocks Configuration */RCC_Configuration();/* NVIC Configuration */NVIC_Configuration();/* Activate the driver */Stepper_Cmd(ENABLE);/* Driver control pin configuration */Stepper_PinControlConfig();/* Disable the initialization of the driver */Stepper_ResetDisable();/* -----------Modes selection: Rotation direction, Step mode, Decay mode---------------*/ #ifdef RotationDirection_CWStepper_SetRotationDirection(Stepper_RotationDirection_CW);#endif /* RotationDirection_CW */#ifdef RotationDirection_CCWStepper_SetRotationDirection(Stepper_RotationDirection_CCW);#endif /* RotationDirection_CCW */#ifdef Half_StepStepper_SelectMode(Stepper_Half);#endif /* Half_Step */#ifdef Full_StepStepper_SelectMode(Stepper_Full);#endif /* Full_Step */#ifdef ControlSlow_CurrentStepper_SetControlMode(Stepper_ControlSlow);#endif /* ControlSlow_Current */#ifdef ControlFast_CurrentStepper_SetControlMode(Stepper_ControlFast);#endif /* ControlFast_Current *//* Start the stepper motor */Stepper_Start(ENABLE);/* Peripherals configuration */Stepper_Init();while (1){}}/*** @brief Configures the different system clocks.* @param None* @retval : None*/void RCC_Configuration(void){/* RCC system reset(for debug purpose) */RCC_DeInit();/* Enable HSE */RCC_HSEConfig(RCC_HSE_ON);/* Wait till HSE is ready */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS){/* Enable Prefetch Buffer */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* Flash 2 wait state */FLASH_SetLatency(FLASH_Latency_2);/* HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1);/* PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);/* PCLK1 = HCLK/2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* PLLCLK = 8MHz * 9 = 72 MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* Enable PLL */RCC_PLLCmd(ENABLE);/* Wait till PLL is ready */while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}/* Select PLL as system clock source */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* Wait till PLL is used as system clock source */while(RCC_GetSYSCLKSource() != 0x08){}}}/*** @brief Configure the nested vectored interrupt controller.* @param None* @retval : None*/void NVIC_Configuration(void){NVIC_SetPriorityGrouping(7); /* 0 bits for pre-emption priority 4 bits forsubpriority*/NVIC_SetPriority(DMA1_Channel2_IRQn, 0x01); /* 0x01 = 0x0 << 3 | (0x1 & 0x7), prority is 0x01 << 4 */NVIC_EnableIRQ(DMA1_Channel2_IRQn);}#ifdef USE_FULL_ASSERT。