




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32F103ZE全数字电机/逆变电源开发平台实验指导书2010年2月目 录第1章 开发平台简介31.1 STM32简介31.2 开发平台简介51.3 控制板配置71.4 逆变板简介81.5 无刷直流电机42BLF01简介12第2章 开发平台快速入门132.1 开发环境MDK简介132.2 MDK安装与配置152.3 MDK快速入门182.4 实验箱的仿真下载24第3章 实验27实验一 单个LED闪烁27实验二 LED流水灯29实验三 按键/LED 输入输出控制实验32实验四 定时器定时应用实验35实验五 DAC实验39实验六 TFT彩屏基本显示实验41实验七 串口通讯基本实验43实验八 CAN通讯实验46实验九 AD采集实验52实验十 AD转换、定时器PWM输出实验55实验十一 无刷直流电机定时换相运行59实验十二 无刷直流电机双闭环运行63附录1 无刷直流电机的结构和工作原理671 永磁无刷直流电机的结构和工作原理672 无刷直流电机的正反转683 无刷直流电机调速69附录2 电路图72STM32F103ZE核心板电路图72控制板底板电路图(1)73控制板底板电路图(2)74控制板底板电路图(3)75底板元件丝网印图76逆变板电路图77逆变板元件丝网印图78第1章 开发平台简介1.1 STM32简介Cortex-M3处理器是一个低功耗的处理器,具有门数少, 中断延迟小, 调试容易等特点。它是为功耗和价格敏感的应用领域而专门设计的、具有较高性能的处理器,应用范围可从低端微控制器到复杂SoC。Cortex-M3处理器使用了ARM v7-M体系结构,是一个可综合的、高度可配置的处理器。它包含了一个高效的哈佛结构三级流水线,可提供1.25DMIPS/MHz的性能。在一个具有32个物理中断的标准处理器实现上(0.13um Metro 50MHz),达到了突出的0.06mW/MHz能效比。为降低器件成本,Cortex-M3处理器采用了与系统部件紧耦合的实现方法,来缩小芯片面积,其内核面积比现有的三级流水线内核缩小了30%。Cortex-M3处理器实现了Thumb-2指令集架构,具有很高的代码密度,可降低存储器需求,并能达到非常接近32位ARM指令集的性能。STM32系列32位闪存微控制器使用来自于ARM公司具有突破性的Cortex-M3内核,该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。Cortex-M3在系统结构上的增强,让STM32受益无穷;Thumb-2指令集带来了更高的指令效率和更强的性能;通过紧耦合的嵌套矢量中断控制器,对中断事件的响应比以往更迅速;所有这些又都融入了业界领先的功耗水准。STM32系列给MCU用户带来了前所未有的自由空间,提供了全新的32位产品选项,结合了高性能、实时、低功耗、低电压等特性,同时保持了高集成度和易于开发的优势。意法半导体(ST)公司的STM32系列微控制器种类齐全,用户可根据不同的应用需求选择合适的芯片。根据片以Flash和RAM的容量,以及片上外调资源种类和数量的不同,STM32系列微控制器主要分为小容量产品、中容量产品、大容量产品和互联型产口。小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。互联型产品是指STM32F105xx和STM32F107xx微控制器。图1.1为STM32系列微控制器各种配置及组成。图1.1 STM32系列微控制器配置图STM32系列除工业可编程逻辑控制器(PLC)、家电、工业及家用安全设备、消防和暖气通风空调系统等传统应用及智能卡和生物测定等消费电子/PC应用外,还特别适合侧重低功耗的设备,如血糖和血脂监测设备等。本实验创新平台以增强型产品STM32F103ZE作为核心CPU。该32位CPU具有以下特点: 32位ARM Cortex-M3结构优化; 72 MHz 运行频率,1.25 DMIPS/MHz; 硬件除法和单周期乘法; 快速可嵌套中断,612个时钟周期; 具有MPU保护设定访问规则; 512K Flash闪存和64K SRAM 8个定时器、12条DMA通道,1个CRC计算单元; 3个12位1us A/D ,21路模拟通道; 2个12位D/A,2通道; 5个USART接口; 2个I2C接口; 3个SPI端口; USB OTG; 1个CAN2.0B 图1.2 STM32F103ZE增强型产品内部结构框图1.2 开发平台简介基于STM32F103ZE的STM32数字电机开发平台采用核心板+底板+逆变板的结构,能为教师科研项目,电子设计竞赛、单片机竞赛等大学生科技活动,提供一个灵活可靠的硬件及软件调试的平台,除能满足普通自动化及计算机等相关专业的嵌入式系统实验、实习及毕业设计需求外;结合逆变板为直流电机/直流无刷地机/交流永磁同步电机调速、DC-AC逆变等现代电力电子技术等应用提供了一个全数字化实验、研究平台。实验平台,以ULINK/JLINK作为仿真器仿真和下载CPU程序,以核心板作为控制核心;底板上带有各种功能模块如:TFT彩屏显示模块、SD卡模块、CAN通讯模块、串口通讯模块、蜂鸣器、指示灯等等接口;逆变板主要由MOSFET三相H桥模块、MOSFET驱动IC模块、高速光耦模块和信号处理模块等构成。各模块自由接线或选默认接线,在该众多模块基础上可以实现各种功能的应用系统,满足各方面的教学创新要求。系统框图见图1.3。逆变板图1.3 数字电机开发平台系统框图图1.4 开发平台模块图1.5 开发平台实物1.3 控制板配置STM32开发平台配有丰富的各种资源:1. CPU:STM32F103ZE,所有引脚通过标准2.54mm间距排针引出,标配SPI接口的2.4 TFT LCD,可以通过跳线选择TFT屏是工作在SPI模式还是8位/16位总线模式;2. 一个电阻式触摸屏及触摸芯片ADS7843;3. 一个RESET按键;4. 四个独立按键;5. 一路电位器输入模拟信号,可用来验证模数转换(A/D);6. 一个标准SD卡座;7. 一个CAN 2.0B网络通讯接口及连接插座;8. 一个RS485网络通讯接口;9. 二个RS232网络通讯接口;10. 一个蜂鸣器;11. 四个可以GPIO控制亮灭LED灯;12. 一个SPI flash,AT45DB041;13. 一个I2C的E2PROM,24C01;14. 一个JTAG仿真调试器;15. 一个标准 USB A型接头,支持USB HOST 16. 一个5针标准Mini USB AB型接头,支持USB OTG,USB Full-Speed Device;17. 一个电源指示灯;18. 电源输入选择,5V DC电源/Mini USB线。1.4 逆变板简介1.4.1 STM32F103ZE开发板电机驱动接口接口如图1.6所示。采用34芯扁平电缆,信号定义见表1.1。图1.6 开发板、逆变器控制接口表1.1 34芯扁平电缆信号线号信号功能描述STM32引脚/功能备注1nFAULT逆变器过流故障信号,低有效。PA6/TIM8-BKIn3PWM-AHA相H端IGBT控制脉冲,高有效。PC6/TIM8-CH1P5PWM-ALA相L端IGBT控制脉冲,高有效。PA7/TIM8-CH1N7PWM-BHB相H端IGBT控制脉冲,高有效。PC7/TIM8-CH2P9PWM-BLB相L端IGBT控制脉冲,高有效。PB0/TIM8-CH2N11PWM-CHC相H端IGBT控制脉冲,高有效。PC8/TIM8-CH3P13PWM-CLC相L端IGBT控制脉冲,高有效。PB1/TIM8-CH3N15I-MOTOR逆变器直流母线电流反馈信号。PC1/ADC-IN1117EMF-A逆变器A相输出电压反馈信号。PC2/ADC-IN12可自定义功能19EMF-B逆变器B相输出电压反馈信号。PC3/ADC-IN13可自定义功能23EMF-C逆变器C相输出电压反馈信号。PA3/ADC-IN3可自定义功能21&27OUT开关量、模拟量输出。PB12,PB4可自定义功能29EN-DRVIGBT驱动芯片使能,高有效。PB531HALL-A霍尔/旋转编码器信号A。PA0/TIM2&5-CH133HALL-B霍尔/旋转编码器信号B。PA1/TIM2&5-CH234HALL-C霍尔/旋转编码器信号C。PA2/TIM2&5-CH314VBus逆变器直流母线电压反馈信号。PC0/ADC-IN1026SinkTemp逆变器温度反馈信号。PC5/ADC-IN15255V电源逆变器5V电源输出。用户可选28VDD_MCUSTM32开发板处理器3.3V电源。1.4.2 三相逆变电路由三相H桥逆变输出模块、IGBT/MOFET驱动IC、高速光电耦合器、主电源、控制电源以及取样、保护电路等组成。1)三相H桥逆变模块由直流母线电压、电流采样电路以及6个IGBT/MOFET管构成,见图1.7。图1.7 三相逆变H桥MOSFET管STB75NF75: V(BR)DSS漏源极击穿电压为75V,VGS(th)栅极门限电压4V,RDS(on)导通电阻0.0095,导通时间125ns,关断时间96ns,源漏极二极管导通电压1.5V。图1.8 IR21368引脚图2)IGBT/MOFET驱动IC驱动采用IR公司的IR21368,见图1.8。IR21368采用浮动自举充电技术,无需独立的高端功率管驱动电源;可承受600V直流母线逆变电压;插入死区时间典型值为290ns;具备控制电压欠压自锁功能、过流关断功能,用户可设定故障清除时间,引脚功能见表1.2。表1.2 IR2136引脚功能描述引脚名功能描述VCC 控制逻辑电路以及低端驱动电路电源VSS控制逻辑电路地。HIN1,2,3高端门极驱动的逻辑输入,低有效。LIN1,2,3低端门极驱动的逻辑输入,低有效。FAULT控制逻辑电路欠压、过流故障输出指示。低有效,集电极开路输出。EN芯片使能输入,高有效。ITRIP过流检测输入。过流时,芯片关断全部输出,同时置FAULT和RCIN为低;过流故障消失后FAULT延时TFLTCLR后自动恢复为无效状态。RCIN外部RC网络输入,用以设置TFLTCLR时间(近似为R*C)。COM低端门极驱动电路负端VB1,2,3高端门极驱动电路浮动电源端。HO1,2,3高端门极驱动电路输出。VS1,2,3高端门极驱动电路电源负端。LO1,2,3低端门极驱动电路输出。3)高速光电耦合器为满足系统抗干扰要求,逆变器采用了TOSHIBA公司绝缘电压2500Vrms,开关速度达10Mbps的TLP2630,见图1.9。输出为集电极开路输出方式,真值表见表1.3。图1.9 TP2630引脚图 表1.3 TLP2630真值表输入输出LHHL4)逆变电源逆变器逆变电源如图1.10所示,电路具备过电流和电源反接两种保护功能,逆变电压/电流皆采用电阻分压/分流方式实现。逆变电源输入电压上限为63V。图1.10 逆变电源5) 控制电源图图1.11为控制电源电路,同样具备过电流和电源反接两种保护功能,控制电源和逆变电源共地。输入电压范围18V36V,采用DC/DC稳压芯片实现15V和5V控制电压输出。图1.11 控制电源6)模拟电路逆变器所涉及的模拟信号有:逆变电流、散热器温度及用户外接模拟信号。图1.12为逆变电流信号处理电路,输入输出特性见图1.13。图中R50,R54为电路提供一个约50mV输入偏移电压(避开小信号输出的非线性区),电路输出端漂移约218mV,电流到AD输入电压的转换系数约0.8。图1.12 逆变器电流信号处理图1.13 逆变电流处理电路特性1.5 无刷直流电机42BLF01简介表1.3 42BLF01电机连线HALL传感器电枢绕组颜色用途备注颜色用途备注红色传感器电源正极电源:直流520V黄色A相绕组黑色传感器电源负极绿色B相绕组黄色A相传感器输出集电极开路蓝色C相绕组绿色B相传感器输出蓝色C相传感器输出表1.4 42BLF01主要电气参数名称参数单位名称参数单位绕组形式星形峰值转矩0.18Nm传感器电角度120峰值电流4.6A磁极数8线电阻1.8相数3线电感0.54mH额定电压(直流)24V转矩常数0.042Nm/A额定转速4000rpm反电势常数4.4V/krpm保持力矩0.063Nm转动惯量24gcm2输出功率26W第2章 开发平台快速入门2.1 开发环境MDK简介RealView MDK开发工具源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,融合了中国多数软件开发工程师所需的特点和功能。包括Vision3集成开发环境与 RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20。RealView MDK的突出特性:启动代码生成向导自动引导,启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越的门槛。RealView MDK开发工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。软件模拟器完全脱离硬件的软件开发过程 ,RealView MDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。性能分析器看得更远、看得更细、看得更清,RealView MDK的性能分析器好比哈雷望远镜,让您看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。Cortex-M3支持RealView MDK支持的Cortex-M3核是ARM公司最新推出的针对微控制器应用的内核,它提供业界领先的高性能和低成本的解决方案,未来几年将成为MCU应用的热点和主流。目前国内只有ARM公司的MDK和RVDS开发工具可以支持CortexM3芯片的应用开发。RealView 编译器代码更小,性能更高。RealView MDK的RealView编译器与ADS 1.2比较:n 代码密度:比ADS 1.2编译的代码尺寸小10%;n 代码性能:比ADS 1.2编译的代码性能高20%。n 配备ULINK2仿真器+ Flash编程模块,轻松实现Flash烧写。RealView MDK无需寻求第三方编程软件与硬件支持,通过配套的ULINK2仿真器与Flash编程工具,轻松实现CPU片内FLASH、外扩FLASH烧写,并支持用户自行添加FLASH编程算法;而且能支持FLASH整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能,轻松方便。2.2 MDK安装与配置在光盘中找到“MDK370PRC.EXE”文件,按以下步骤进行软件安装。(1)双击文件,开始安装。图2.1 安装界面(2)选中同意安装选项框。图2.2图2.2 软件安装协议(3)根据需要修改安装路径。 (4) 填入对应信息。图2.3 填写用户信息(5)点击“NEXT” 开始安装,直到安装完成。图2.4 安装过程(6)MDK安装完成后,需要注册。运行KEIL_LIC.EXE文件.打开MDK(UV3)软件,打开“FILE”菜单下的“License Management”,拷贝“CID”号到KEIL_LIC软件中“CID”,“Target”选“ARM”,点击“GENERAQTE”,拷贝生成的“LIC”序列号至UV3软件的License Management的对应框内,点击“ADD LIC”完成注册MDK-ARM。 如图2.5。图2.5 生成软件许可证 (7)MDK注册完成后,为使ULINK能正确仿真STM32,需对ULINK安装驱动。拷贝ULLINK目录下的BIN文件夹中的三个文件(ARM.dll、UL2ARM.dll、UL2CM3.dll)拷贝到MDK安装目录下BIN文件夹中(如C:KeilARMBIN)文件。将windows文件夹中两个文件夹(inf及system32)拷贝到C:windows文件夹内。ULINK上电,自动安装驱动程序,即可识别ULINK。(8)打开C:KeilARMFlash文件夹,修改两个文件的名称:STM32F10x_512.FLMSTM32F10x_512.FLX;STM32F10x_128.FLM STM32F10x_128.FLX。(如果FLX文件存在就不用此步,因为不同的版本可能存在。FLX这两个文件,也可能不存在,也可能只有其一,自己视情况修改即可)。至此,MDK软件及ULINK驱动安装完成。2.3 MDK快速入门创新一个新的工程并进行仿真配置好的方法如下:(1)打开KEIL 软件:图2.6 Keil界面 (2)创新一个新工程:点击Project菜单下的”New uVison Project”:图2.7 创建新软件工程(3)在出现的对话框中,输入要创建的工程文件名:(如test),并“保存”:图2.8 保存工程(4)在出现的对话框中,选中芯片“STM32F103ZE”,并点击“OK”:图2.9 选择处理器型号(5)在新对话框中选“否”:图2.10 启动代码设置(6)右击“Project Workspace ”,对工程结构进行管理。图2.11 进入工程管理(7)在出现的对话框中,对工程结构进行管理,并添加文件:如图2.12。 在本实验平台例程和应用中,均使用官方标准库文件Library3.0版本,以方便对CPU各资源丰富的寄存器进行设置和管理。Library3.0库在开发工程应用中,主要涉及两部分,一是标准外设资源的操作,另一处是启动文件。因此在实验中,我们设为以下四组。Source Group1为应用中源文件。CMSIS为启动文件组,Stdperiph_lib为标准外设库文件组,Readme为本应用工程的相关说明。其中Readme可由用户自由选择添加与否。其中各组添加的具体文件请说见光盘中的例程。图2.12 工程管理窗口(8)将源文件中主程序编好,并进行保存。然后对工程进行相关设置,点击工具条中的按钮,进行相关参数设置。在Device页面选择“STM32F103ZE”器件。如图2.13。图2.13 选择工程处理器型号(9)切换到Target页面,进行ROM和RAM地址的设置,设置方法如图2.14。图2.14 工程ROM和RAM设置(10)切换到C/C+页面,在Preprocessor Symbols栏里,在Define:右侧的框里输入宏定义:“USE_STDPERIPH_DRIVER”,(如不使用3.0库,可不用此定义)。在Include Paths框中,输入本应用工程中所涉及头文件(.h文件)的目录,点击对应框右侧的按钮,将每一项录径均加添加进来。如图2.15所示添加结果。图2.15 C/C+编译环境设置(11)切换到Debug页面,选择“ULINK Cortex Debugger”以便用ULINK进行CPU的仿真和下载。如图2.16所示。图2.16 调试方式选择(12)切换到”Utilities”页面,选择“ULINK Cortex Debugger”选项,并点击右侧的“Settings”按钮,添加对应的CPU。分别如图2.17,和2.18。图2.17 Flash下载工具选择图2.18 Flash下载设置(13)点击OK退出工程设置对话框。对工程文件进行相关编程,完毕后,进行编译,直到0个Errors为止。如图2.19。在工程编程完毕后,按2.4章进行工程文件的仿真和下载,并观察结果。图2.19 工程编译信息注:关于本节内容,可参见光盘中的“keilmdk StLibV3配置方法.exe”MDK视频文件。2.4 实验箱的仿真下载(1)打开KEIL软件。新建一个工程或打开现有例程(ULINK文件夹中的“0 GPIO 点亮一个指示灯LD1”文件夹中的“UET_CACHE.Uv2”文件),如图所示,点击“Option for Target”按钮(或打开“Project”菜单下“Option for Target Target1”按钮):进行相关配置。在弹出的对话框切换到“Debug”页面:选择“ULINK Cortec Debugger”选项。图2.20 调试设置(2)系统上电。稍等两秒,让硬件识别到ULINK。再点击旁边“Setting”按钮。出现以下对话框。其中,如果ULINK已正确安装或硬件已识别到,左侧部分(1内)内容有以下数据;或如果已有这些数据表明ULINK已能使用。如果ULINK已正确连接到开发板,且开发板上电,则右侧部分(2内)有数据存在;如果右侧没有数据或显示灰色,则表明ULINK未与开发板相连或开发板没上电或开发板有问题等等,开发板与ULINK的连接存在问题。图2.21 ULINK JTAG信息(3)要仿真和下载程序,还需操作一步。选“Utilities”页面。点“Setting“按钮,在出现的对话框中,点“ADD”按钮,选中“STM32F10X512K FLASH”选项,点“添加”和“OK”即可。图2.22 添加Flash编程施法(4)编译工程。点击按键或Project菜单下的“Rebuild all target files”,在出现0个ERRORS的编译结果输出框时,就可以仿真和下载程序。点击可进行仿真,点击可进行下载。仿真过程中的调试方法,(如断点的设置,单步、连续运行等方法),与传统UVSION V2.0完全相同,在此不再具体讲解。(如需要,可在网上寻找相关资料)。 第3章 实验实验一 单个LED闪烁1. 实验目的1 掌握MDK工程文件的建立,源文件的编辑,和相关工程设置等基本操作。2 熟悉STM32单片机GPIO口的输出控制。2. 实验设备及器件PC机 一台实验平台 一台3. 实验内容实现实验平台中的核心板上的指示灯PC13延时闪烁。4. 实验分析PC13为核心板上LD2灯的接口。将PC13配置为集电极开路输出模式(Out_PP),对PC13延时置高或置低,即可实现闪烁功能。延时的长短决定闪烁的快慢。可先使用内部晶振,(不进行时钟配置时),选的是默认内部8M晶振。编程很容易实现指示灯的闪烁。5. 实验步骤(1)按照2.3节的内容,建立一个新工程。并配置好关参数。 (2)对主程序进行编程,实现延时控制灯闪烁功能。(3)打开实验平台,按照2.4节的内容,对工程文件进行仿真或下载,查看核心板上指示灯是否闪烁。(4)多次实验,熟悉MDK开发环境的应用。6. 参考例程#include stm32f10x.hvoid Gpio_int(void);void Gpio_int(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_Init(GPIOC,&GPIO_InitStructure); int main(void) u32 x=400000, count=0; u32 i; Gpio_int(); while(1) for(i=0; i0;x-);int main(void) Gpio_int();while(1) Delay();GPIO_ResetBits(GPIOF,GPIO_Pin_6);Delay();GPIO_ResetBits(GPIOF,GPIO_Pin_7);Delay();GPIO_ResetBits(GPIOF,GPIO_Pin_8);Delay();GPIO_ResetBits(GPIOF,GPIO_Pin_9);Delay();GPIO_SetBits(GPIOF,GPIO_Pin_6);Delay();GPIO_SetBits(GPIOF,GPIO_Pin_7);Delay();GPIO_SetBits(GPIOF,GPIO_Pin_8);Delay();GPIO_SetBits(GPIOF,GPIO_Pin_9); 实验三 按键/LED 输入输出控制实验1. 实验目的熟悉STM32 GPIO的应用。2. 实验设备及器件PC机 一台实验平台 一台3. 实验内容利用实验平台LD1LD4和KEY2KEY5(皆在LCD下方),试编程实现按下KEY2,KEY3,KEY4,KEY5键时对应的LD1,LD2,LD3,LD4亮。4. 实验分析LD1LD4分别由PF6PF9输出控制。在GPIO初始化时,需将这三个IO口配置为推挽输出模式。KEY2KEY4分别占PA0、PC13、PG7、PG8。除KEY2(PA0)外,按键为高电平有效(即键按下时IO口状态为高电平)。5. 实验步骤(1)用跳线连接LD1LD4到PF6PF9。(2)按照2.3节的内容,建立一个新工程。并配置好关参数。(3)编程实现实验功能。(4)打开实验平台,按照2.4节的内容,对工程文件进行仿真或下载,查看运行结果。6. 参考例程#include stm32f10x.hvoid Gpio_int(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |/ KEY2之GPIO CLK RCC_APB2Periph_GPIOC |/ KEY3之GPIO CLK RCC_APB2Periph_GPIOG |/ KEY45之GPIO CLKRCC_APB2Periph_GPIOF, / LD1LD4之GPIO CLKENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOF,&GPIO_InitStructure); / KEY2之GPIO模式定义 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA,&GPIO_InitStructure); / KEY3之GPIO模式定义 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOC,&GPIO_InitStructure); / KEY45之GPIO模式定义 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOG,&GPIO_InitStructure); int main(void) SystemInit(); Gpio_int(); while(1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=0)/按KEY2,LD1亮 GPIO_SetBits(GPIOF,GPIO_Pin_6); GPIO_ResetBits(GPIOF,GPIO_Pin_7); GPIO_ResetBits(GPIOF,GPIO_Pin_8); GPIO_ResetBits(GPIOF,GPIO_Pin_9);else if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)=1) /按KEY3,LD2亮 GPIO_ResetBits(GPIOF,GPIO_Pin_6); GPIO_SetBits(GPIOF,GPIO_Pin_7); GPIO_ResetBits(GPIOF,GPIO_Pin_8); GPIO_ResetBits(GPIOF,GPIO_Pin_9);else if(GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_7)=1) /按KEY4,LD3亮 GPIO_ResetBits(GPIOF,GPIO_Pin_6); GPIO_ResetBits(GPIOF,GPIO_Pin_7); GPIO_SetBits(GPIOF,GPIO_Pin_8); GPIO_ResetBits(GPIOF,GPIO_Pin_9);else if(GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_8)=1) /按KEY5,LD4亮 GPIO_ResetBits(GPIOF,GPIO_Pin_6); GPIO_ResetBits(GPIOF,GPIO_Pin_7); GPIO_ResetBits(GPIOF,GPIO_Pin_8); GPIO_SetBits(GPIOF,GPIO_Pin_9); 实验四 定时器定时应用实验1. 实验目的学会使用STM32的定时器功能。2. 实验设备及器件PC机 一台实验平台 一台3. 实验内容试编程实现蜂鸣器发出蜂鸣器发出汽车警笛声。4. 实验分析蜂鸣器占用的是PC6口,在使用之前需要连接跳线JP11。汽车警笛声频率范围为2K-4kHz,蜂鸣器IO口的翻转频率为4K-8kHz。为实现警笛声,可将频率段分成50份,1s的时间实现警笛声从高到低,再用1s的时间实现警笛声从低到高频率发声,以至循环实现连续的警笛声。为此需要精确定时。用两个定时器可实现,其中之一用来定时改变警笛声的频率,另一定时器可定时翻转蜂鸣器IO,以驱动蜂鸣器发声。对于时钟的配置,可选择内部8M晶振,也可选择外部晶振。(详细配置原理请参考ST使用手册)另外,本例程需要使用定时器中断资源。关于中断的相关配置,请参考使用手册。(请多次实验和体会,以灵活使用STM32中断资源)5. 实验步骤(1)连接JP11的蜂鸣器跳线。(2)按照2.3节的内容,建立一个新工程。并配置好关参数。(3)对主程序进行编程,并实现蜂鸣器发警笛声功能。(4)打开实验平台,按照2.4节的内容,对工程文件进行仿真或下载,查看运行结果。6. 参考例程主程序:#include stm32f10x.h#include sysinit.hint main(void) u32 x=400000,i,count=0; SystemInit(); Gpio_int(); NVIC_init(); Timer_init(); GPIO_ ResetBits (GPIOF,GPIO_Pin_6); GPIO_ SetBits (GPIOF,GPIO_Pin_7);GPIO_ SetBits (GPIOF,GPIO_Pin_8); while(1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=1) x=4000000; for(i=0;i7) count=1;if(count&0x01)=1) GPIO_ResetBits(GPIOF,GPIO_Pin_6); / LD1灭else GPIO_SetBits(GPIOF,GPIO_Pin_6); / LD1亮if(count&0x02)=2) GPIO_ResetBits(GPIOF,GPIO_Pin_7); else GPIO_SetBits(GPIOF,GPIO_Pin_7); if(count&0x04)=4) GPIO_ResetBits(GPIOF,GPIO_Pin_8);else GPIO_SetBits(GPIOF,GPIO_Pin_8); 初始化程序:#include sysinit.h #include stm32f10x.hvoid Gpio_int(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | / Beep GPIO CLK RCC_APB2Periph_GPIOF,/ LD1LD3 GPIO CLK ENABLE); /LDLD3 definition GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOF,&GPIO_InitStructure); /Beeper definition GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; GPIO_Init(GPIOC,&GPIO_InitStructure); void NVIC_init(void) NVIC_InitTypeDef NVIC_InitStructure; / Enable the TIM1 gloabal Interrupt NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); / Ena
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 德州市模拟考试速写题及答案
- 天水市语文中考试题及答案
- 2025年公需课《生产安全事故应急条例》考试题及答案
- 2025年高压电工操作证理论考试笔试试题含答案
- 2025年高级电工试题库(有答案)
- 锦州物理中考试题及答案
- 衡阳公共食堂管理办法
- 贷款管理办法修订通知
- 专家评审技术管理办法
- 产品影像资料管理办法
- 小学学生素质教育报告单
- 城市街道景观设计课件
- 主题思政课铸牢中华民族共同体意识
- 邮政行业痛点与解决措施
- 二年级《劳动最光荣》课件
- 帕夫雷什中学
- 2023年人教版美术六年级上册全册教案
- 道路交通安全法知识试题库完整
- 研究生学术行为规范讲座
- 水资源论证水土保持防洪评价收费标准
- 年处理12万吨煤焦油加工工艺初步设计
评论
0/150
提交评论