六自由度并联运动平台设计_第1页
六自由度并联运动平台设计_第2页
六自由度并联运动平台设计_第3页
六自由度并联运动平台设计_第4页
六自由度并联运动平台设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

六自由度并联运动平台摘要:在上学期课程研究项目智能移动小车的基础上,我们小组自由设计并制作了一款新型专用机器人系统六自由度并联运动平台。该专用机器人系统具备以下基本功能:a. 具备完成控制能力,能够按照任务应用完成相关运动;b. 具备无线通讯功能,能够实现专用机器人系统的无线远程控制。项目实施前期,我们主要进行了资料整理与分析,查阅了相关文献资料,针对机器人总体设计,确定了机器人的具体任务要求,根据任务初步拟定了机器人的技术参数、运动形式、机械结构、驱动方案、传动方案、控制方案等;项目中期,我们主要设计了机械工程图纸,包括装配图、部件图和零件图,并初步拟定了电路原理图;项目后期,我们简要学习了C语言,学习了传感和信息检测及信息传输,根据任务要求,完成了相关信息检测、处理,采用了stm32f103rct6单片机,完成了机器人控制系统硬件,设计了软件系统,并开展了程序调试。整个项目实施的过程并不顺利,首先是项目任务不明确,这致使我们我们前期的精力,主要投放在了程序学习,忽略了机械设计方案的重要性和首要性,导致了我们项目中期及后期的仓促及紧张,打乱了原有的计划,这次项目实施的出发点很好,我们不光学习了有用的知识机电一体化以及电机和电力拖动,也理解了任务的明确性绝对高于任务的计划。在课程设计面向任务物智能机器人系统的基础上,我们自主设计了一套能够展示所设计的智能机器人的完整程序,自主构思动作方案与运动轨迹,制定出编程实现的流程图并编写出完整的程序,进行机器人运动控制规划,与平衡小车协同作业,充分展示六自由度并联机器人系统的结构紧凑,刚度高,承载能力大的结构特点,实现机器人完成一系列新颖的、复杂的动作。关键词:单片机 调试 并联 C语言目录摘要1第一章 专业综合训练综述31.1智能机器人系统国内外发展现状31.2智能机器人系统设计任务概述31.3专业综合训练主要内容4第二章 运动控制方案介绍52.1机械结构方案设计52.2驱动方案选择62.2.1电动机的选择62.2.2电动机驱动方案的选择62.2.3供电电源方案的选择7第三章 动作的总体规划详细方案8第四章 编制程序设计流程框图10第五章 编程实现规划动作115.1 软件系统总体方案115.2位姿与速度控制方案115.3程序代码12第六章 程序调试结果13项目心得16参考文献17附录 程序源代码18第一章 专业综合训练综述1.1智能机器人系统国内外发展现状 智能机器人是第三代机器人,能够将多种传感器得到的信息进行融合,能够有效的适应变化的环境,具有很强的自适应能力、学习能力和自治功能。智能机器人研究中当前的核心问题有两方面:一方面是,提高智能机器人的自主性,这是就智能机器人与人的关系而言,即希望智能机器人进一步独立于人,具有更为友善的人机界面。从长远来说,希望操作人员只要给出要完成的任务,而机器能自动形成完成该任务的步骤,并自动完成它。另一方面是,提高智能机器人的适应性,提高智能机器人适应环境变化的能力。智能机器人涉及到许多关键技术,这些技术关系到智能机器人的智能性的高低。这些关键技术主要有以下几个方面:多传感信息耦合技术,多传感器信息融合就是指综合来自多个传感器的感知数据,以产生更可靠、更准确或更全面的信息,经过融合的多传感器系统能够更加完善、精确地反映检测对象的特性,消除信息的不确定性,提高信息的可靠性;导航和定位技术,在自主移动机器人导航中,无论是局部实时避障还是全局规划,都需要精确知道机器人或障碍物的当前状态及位置,以完成导航、避障及路径规划等任务;路径规划技术,最优路径规划就是依据某个或某些优化准则,在机器人工作空间中找到一条从起始状态到目标状态、可以避开障碍物的最优路径;机器人视觉技术,机器人视觉系统的工作包括图像的获取、图像的处理和分析、输出和显示,核心任务是特征提取、图像分割和图像辨识;智能控制技术,智能控制方法提高了机器人的速度及精度;人机接口技术,人机接口技术是研究如何使人方便自然地与计算机交流。在各国的智能机器人发展中,美国的智能机器人技术在国际上一直处于领先地位,其技术全面、先进,适应性也很强,性能可靠、功能全面、精确度高,其视觉、触觉等人工智能技术已在航天、汽车工业中广泛应用。日本由于一系列扶植政策,各类机器人包括智能机器人的发展迅速。欧洲各国在智能机器人的研究和应用方面在世界上处于公认的领先地位。中国起步较晚,而后进入了大力发展的时期,期以机器人为媒介物推动整个制造业的改变,推动整个高技术产业的壮大。1.2智能机器人系统设计任务概述 在上学期课程研究项目智能移动小车的基础上,我们小组自由设计并制作了一款新型专用机器人系统六自由度并联运动平台。该专用机器人系统具备以下基本功能:a. 具备完成控制能力,能够按照任务应用完成相关运动;b. 具备无线通讯功能,能够实现专用机器人系统的无线远程控制。 项目实施前期,我们主要进行了资料整理与分析,查阅了相关文献资料,针对机器人总体设计,确定了机器人的具体任务要求,根据任务初步拟定机器人的技术参数、运动形式、机械结构、驱动方案、传动方案、控制方案等;项目中期,我们主要设计了机械工程图纸,包括装配图、部件图和零件图,并初步拟定了电路原理图;项目后期,我们简要学习了C语言,学习了传感和信息检测及信息传输,根据任务要求,完成了相关信息检测、处理,采用了stm32f103rct6单片机,完成了机器人控制系统硬件,设计了软件系统,并开展了程序调试。1.3专业综合训练主要内容(1)资料查阅、方案准备、素材整理;(2)运动控制方案:详细分析智能机器人系统的硬件和软件方案。(3)完成动作的总体规划;(4)编制程序设计流程图;(5)编程实现规定的动作,编写程序代码;(6)程序调试、预演;(7)编制课程设计说明书;(8)完成动作现场展示。第二章 运动控制方案介绍2.1机械结构方案设计常见六自由度运动平台是由六支油缸,上、下各六只万向铰链和上、下两个平台组成,下平台固定在基础上,借助六只油缸的伸缩运动,完成上平台在空间六个自由度(X,Y,Z,)的运动 图2.1机械结构用途:模拟出各种空间运动姿态,可广泛应用到各种训练模拟器如飞行模拟器、舰艇模拟器、海军直升机起降模拟平台、坦克模拟器、汽车驾驶模拟器、火车驾驶模拟器、地震模拟器以及动感电影、娱乐设备等领域由于六自由度运动平台的研制,涉及机械、液压、电气、控制、计算机、传感器,空间运动数学模型、实时信号传输处理、图形显示、动态仿真等等一系列高科技领域,因而六自由度运动平台的研制变成了高等院校、研究院所在液压和控制领域水平的标志性象征。 我们项目的机械机构,是针对常见类型的六自由度运动平台的仿制。 限于成本和条件限制,基于实验室现有设施,我们决定采用亚克力板制作我们的六自由度运动平台,具体来说,就是制作定平台底、定平台盖、舵机架和动平台,剩下的零件和部件外购。使用胶粘的方式,将定平台的底和盖与舵机架固定在一起,再通过支撑杆,将定平台和动平台连接。2.2驱动方案选择 2.2.1电动机的选择采用数字舵机。控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。其工作流程为:控制信号控制电路板电机转动齿轮组减速舵盘转动位置反馈电位计控制电路板反馈。 图2.2.1 数字舵机 采用PDI-6221MG-180度,舵机具体规格如下:死区: 2s 脉宽范围:500s-2500s(适合单片机控制板) 角度范围:实际角度1722电机:铁芯工作电压:DC4.8V-6.6V速度 (4.8V): 0.18 sec/85 速度 (6V): 0.16 sec/85 扭力 (4.8V): 17.25 kg.cm (239.55oz/in)扭力 (6V): 20.32 kg-cm (281.89 oz/in)尺寸: 40.5X20.2X38mm /(标准尺寸)重量: 62 g (2.18oz)连接线: JR 265 mm (10.43in)2.2.2电动机驱动方案的选择 采用pwm驱动舵机,控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。图2.2.2调压板2.2.3供电电源方案的选择采用单一电源供电。电源直接给电动机供电,因为电动机启动瞬间电流大,会造成电源电压波动,因而控制与检测部分电路调压板供电。供电电路比较简单。采用调压版调成舵机的供电电压5V。第三章 动作的总体规划详细方案 在课程设计面向任务物智能机器人系统的基础上,我们组自主设计一套能够展示所设计的智能机器人机械本体、传感检测、驱动及控制系统的完整程序,自主构思动作方案、运动轨迹、协同作业等任务,进行机器人运动控制规划,实现机器人完成一系列新颖的、复杂的动作。 为了使动作特点能够充分展示我们项目六自由度并联运动平台机器人,表演它的结构特点,如精度较高、驱动装置可置于定平台上或接近定平台的位置,这样运动部分重量轻,速度高,动态响应好、结构紧凑,刚度高,承载能力大、完全对称的并联机构具有较好的各向同性、工作空间较小等等,并且充分整合专业资源、积极与其他类型的优秀机器人协同作业表演,体现创新意、新意,我们决定于平衡车一起表演,相得益彰。 动作的总体规划详细方案如下: 以挑战吉尼斯的表演性方式,主动吸引观众的眼球。挑战时,六自由度并联运动平台机器人作为运动平台,通过胶带,粘接在四脚板凳上,以获得足够的平稳性,作为表演节目的动力,承载一块大小约为800*600的亚克力平板。小车则在亚克力平台上滚动,保持平衡。 刚开始,亚克力平台与水平面呈,此时平衡小车和在平地运动的状态是一样的;运动20秒后,此后每隔15秒,亚克力平台程序自动控制,自动倾斜,如此连续60秒,运动结束后,亚克力平台与水平面呈;再接着,此后每隔20秒,亚克力平台程序自动控制,自动倾斜,如此连续80秒,运动结束后,亚克力平台与水平面呈;再接着,亚克力平台开始逐渐恢复水平状态,并且整体水平升高一段高度,在缓慢恢复原始状态,这一小阶段大约30秒。 在长达三分钟多的挑战过程中,当亚克力平台与水平面呈的期间,如果六自由度并联运动平台和平衡小车都能正常表演,就算挑战吉尼斯成功,协同作业表演,体现创新意、新意,既体现出六自由度并联运动平台作为并联机器人,有高刚度、高精度或者大载荷而无须很大工作空间的特点,也体现出平衡小车出色的平衡性。图3.1动作规划方案效果图第四章 编制程序设计流程框图 刚开始,亚克力平台与水平面呈,此时平衡小车和在平地运动的状态是一样的;运动20秒后,此后每隔15秒,亚克力平台程序自动控制,自动倾斜,如此连续60秒,运动结束后,亚克力平台与水平面呈;再接着,此后每隔20秒,亚克力平台程序自动控制,自动倾斜,如此连续80秒,运动结束后,亚克力平台与水平面呈;再接着,亚克力平台开始逐渐恢复水平状态,并且整体水平升高一段高度,在缓慢恢复原始状态,这一小阶段大约30秒。 编制程序设计流程框图如下:图4.1程序设计流程框图第五章 编程实现规划动作5.1 软件系统总体方案采用STM32F103RCT6单片机开发板控制舵机控制板,具体连接线路参照电路图,采用上位机通常下位机机,工电脑作为上位机,通信控制单片机作为下位机,进而通过舵机控制板执行命令,从而控制相关舵机和驱动装置。图5.1上位机界面5.2位姿与速度控制方案使用鼠标拖动舵机面板中的滑条(舵机连接的是第几个通道,就必须拖动对应的舵机面板,面板上方就是编号,如下图中的S1,就是#1号舵机,以此类推,直至6号舵机) 按照上面的步骤依次控制多个舵机之后,然后设置好时间(设置的是1000ms,代表舵机的旋转速度,范围必须在100-9999之间,数值越大速度越慢),然后点击软件下方的“添加“按钮,此时软件下方将会生成一条命令,该条命令就可以同时控制前面控制的所有舵机(前面控制了6个舵机,那么该条命令就可以同时控制这6个舵机)。具体来说,通过更改前文所述的操作,拖动滑条,更改六自由度运动平台的位姿,更改运动设置的时间的大小,可以改变改六自由度运动平台的速度。5.3程序代码#1P1478#2P1500#3P1500#4P1478#5P1450#6P1550T5000#1P1478#2P1500#3P1500#4P1478#5P1450#6P1550T5000#1P1478#2P1500#3P1500#4P1478#5P1450#6P1550T5000#5P1425#6P1575T5000#5P1425#6P1575T5000#5P1400#6P1600T5000#5P1400#6P1600T5000#5P1375#6P1625T5000#5P1375#6P1625T5000#5P1350#6P1650T5000#5P1350#6P1650T5000#5P1350#6P1650T5000#5P1325#6P1675T5000#5P1325#6P1675T5000#5P1325#6P1675T5000#5P1300#6P1700T5000#5P1300#6P1700T5000#5P1300#6P1700T5000#5P1300#6P1700T5000#5P1275#6P1725T5000#5P1275#6P1725T5000#5P1275#6P1725T5000#5P1275#6P1725T5000#5P1250#6P1750T5000#5P1250#6P1750T5000#5P1250#6P1750T5000#5P1250#6P1750T5000#1P1478#2P1500#3P1500#4P1478#5P1500#6P1500T9999#1P1278#2P1700#3P1300#4P1678#5P1300#6P1700T5000#1P1278#2P1700#3P1300#4P1678#5P1300#6P1700T2000#1P1478#2P1500#3P1500#4P1478#5P1500#6P1500T5000第六章 程序调试结果六自由度运动平台,我们装配的时候首先将使用胶粘的方式,将定平台的底和盖与舵机架(此时舵机已经提前通过螺栓固定在舵机架上),固定在一起,再通过支撑杆,将定平台和动平台连接。六自由度并联运动平台机器人作为运动平台,通过胶带,粘接在四脚板凳上,以获得足够的平稳性,作为表演节目的动力,承载一块大小约为800*600的亚克力平板。小车则在亚克力平台上滚动,保持平衡。将机械部分上的6个舵机的引脚有序地连接在舵机控制板上,再接着和STM32F103RCT6、蓝牙模块连接,接上电源后,用usb和st-linker连接电脑,操控上位机,完成机器人系统整体装配。程序调试结果如下图:图6.1六自由度运动平台水平图6.2六自由度运动平台与水平面呈图6.3六自由度运动平台与水平面呈 在长达三分钟多的挑战过程中,当亚克力平台与水平面呈的期间,如果六自由度并联运动平台和平衡小车都能正常表演,就算挑战吉尼斯成功,协同作业表演,体现创新意、新意,既体现出六自由度并联运动平台作为并联机器人,有高刚度、高精度或者大载荷而无须很大工作空间的特点,也体现出平衡小车出色的平衡性。项目心得 本报告主要概述了利用软件编程来实现动平台运动模拟的整个过程和基本原理。动平台的设计有各种各样的方案等着我们去思考实现,相信如果再有机会我们能够比现在做得更好。本次课程设计时间紧任务重,通过全组人员的通力协作终于在汇报前按时完成,在此过程中也让我们更深入的了解了机器人这门课程的实际应用。项目实施前期,我们主要进行了资料整理与分析,查阅了相关文献资料,针对机器人总体设计,确定了机器人的具体任务要求,根据任务初步拟定机器人的技术参数、运动形式、机械结构、驱动方案、传动方案、控制方案等;项目中期,我们主要设计了机械工程图纸,包括装配图、部件图和零件图,并初步拟定了电路原理图;项目后期,我们简要学习了C语言,学习了传感和信息检测及信息传输,根据任务要求,完成了相关信息检测、处理,采用了stm32f103rct6单片机,完成了机器人控制系统硬件,设计了软件系统,并开展了程序调试。整个项目实施的过程并不顺利,首先是项目任务不明确,这致使我们我们前期的精力,主要投放在了程序学习,忽略了机械设计方案的重要性和首要性,导致了我们项目中期及后期的仓促及紧张,打乱了原有的计划,这次项目实施的出发点还是很好的。 本次设计综合了所学的机器人学的所有知识,是对过去学习的检验,同时也是巩固提高、温故知新的过程。通过此次设计使我们发现如今学习到的知识面还是太窄,内容有限,仅仅为取得考试成绩所学的知识根本远远不够,只有更广泛的学习和调查各方面的资料才能达到真真的提高。首先面临机械臂多种方案的设计,开始无从下手,后通过查阅各方资料不断吸取新的内容才完成了项目的第一步,最重要的运动学正反 解在实际计算时也面临很多困难,再者就是在完成此次项目的同时还交叉着其他各科的许多项目与考试,如何合理的安排时间调高项目的进行效率也是一个考验。设计过程中,在老师、助教以及同学的帮助和配合下,才使得项目如期基本完成,这体现了团队精神的重要性。本次课程实践项目无论在专业知识还是在学习能力上都对我们有很大的启发,也非常感谢老师和助教的指导。参考文献1 许立忠,周玉林主编.机械设计.北京:中国标准出版社,20132 韩晓娟主编.机械设计课程设计指导手册.北京 :中国标准出版社,20123 STM32F1Oxxx参考手册.STM官方出版,20084 黄智伟主编.STM32 32位ARM微控制器应用设计与实践.北京 :北京航空航天大学出版社,2012附录 程序源代码#include timer.h#include stm32f10x.hvoid GPIO_TimPWM(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); /GPIOA使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6; /TIM3_CH1,TIM3_CH2 输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); /GPIOB使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1 |GPIO_Pin_7|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); void TIM3_Configuration(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /使能TIM3/系统默认时钟为72MHz,预分频71+1次,得到TIM3计数时钟为1MHz/计数长度为19999+1=20000,可得PWM频率为1M/20000=50Hz TIM_TimeBaseStructure.TIM_Prescaler = 71-1;/ TIM_TimeBaseStructure.TIM_Period = 20000-1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/设置时钟分割: TIM_CKD_DIV1 = 0,PWM波不延时 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM3, DISABLE); /禁止ARR预装载缓冲器 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; /选择定时器模式:TIM脉冲宽度调制模式2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比较输出使能 /占空比设置方法: /占空比=(TIM_Pulse+1)/(TIM_Pulse+1)-(TIM_Period+1)=1500/20000=7.5% TIM_OCInitStructure.TIM_Pulse = 1500-1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; /输出极性:TIM输出比较极性低 TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIM3在CCR1上的预装载寄存器 TIM_OC2Init(TIM3, &TIM_OCInitStructure); / TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIM3在CCR2上的预装载寄存器 TIM_OC3Init(TIM3, &TIM_OCInitStructure); / TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIM3在CCR3上的预装载寄存器 TIM_OC4Init(TIM3, &TIM_OCInitStructure); / TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIM3在CCR4上的预装载寄存器 TIM_CtrlPWMOutputs(TIM3,ENABLE); /设置TIM3的PWM输出为使能 TIM_ARRPreloadConfig(TIM3, ENABLE); /使能TIM3在ARR上的预装载寄存器 TIM_Cmd(TIM3, ENABLE); /使能TIM3外设void TIM4_Configuration(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); /使能TIM4 TIM_TimeBaseStructure.TIM_Prescaler = 71-1;/ TIM_TimeBaseStructure.TIM_Period = 20000-1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM4, DISABLE); /禁止ARR预装载缓冲器 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; /选择定时器模式:TIM脉冲宽度调制模式2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比较输出使能 TIM_OCInitStructure.TIM_Pulse = 1500-1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; /输出极性:TIM输出比较极性低 TIM_OC1Init(TIM4, &TIM_OCInitStructure); / TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); /使能TIM4在CCR1上的预装载寄存器 TIM_OC2Init(TIM4, &TIM_OCInitStructure); / TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); /使能TIM4在CCR2上的预装载寄存器 TIM_CtrlPWMOutputs(TIM4,ENABLE); /设置TIM4的PWM输出为使能 TIM_ARRPreloadConfig(TIM4, ENABLE); /使能TIM4在ARR上的预装载寄存器 TIM_Cmd(TIM4, ENABLE); /使能TIM4外设#include sys.h#include usart.h /加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1#pragma import(_use_no_semihosting) /标准库需要的支持函数 struct _FILE int handle; ; FILE _stdout; /定义_sys_exit()以避免使用半主机模式 _sys_exit(int x) x = x; /重定义fputc函数 int fputc(int ch, FILE *f) while(USART1-SR&0X40)=0);/循环发送,直到发送完毕 USART1-DR = (u8) ch; return ch;#endif /*使用microLib的方法*/ /* int fputc(int ch, FILE *f)USART_SendData(USART1, (uint8_t) ch);while (USART_GetFlagStatus(USART1, USART_FLAG_TC) = RESET) return ch;int GetKey (void) while (!(USART1-SR & USART_FLAG_RXNE); return (int)(USART1-DR & 0x1FF);*/ #if EN_USART1_RX /如果使能了接收/串口1中断服务程序/注意,读取USARTx-SR能避免莫名其妙的错误 u8 USART_RX_BUFUSART_REC_LEN; /接收缓冲,最大USART_REC_LEN个字节./接收状态/bit15,接收完成标志/bit14,接收到0x0d/bit130,接收到的有效字节数目u16 USART_RX_STA=0; /接收状态标记 void uart_init(u32 bound) /GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);/使能USART1,GPIOA时钟 /USART1_TX GPIOA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure);/初始化GPIOA.9 /USART1_RX GPIOA.10初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;/PA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure);/初始化GPIOA.10 /Usart1 NVIC 配置 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;/抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/IRQ通道使能NVIC_Init(&NVIC_InitStructure);/根据指定的参数初始化VIC寄存器 /USART 初始化设置USART_InitStructure.USART_BaudRate = bound;/串口波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;/字长为8位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_1;/一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;/无奇偶校验位USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;/无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/收发模式 USART_Init(USART1, &USART_InitStructure); /初始化串口1 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/开启串口接受中断 USART_Cmd(

温馨提示

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

评论

0/150

提交评论