模糊控制及其MATLAB仿真.pdf
主要讲解模糊控制理论在MATLAB系统的中的应用前言自动控制理论经历了经典控制和现代控制两个重大发展阶段,已经相当完善。然而,对于许多复杂庞大的被控对象及其外界环境,有时难以建立有效的数学模型,因而无法采用常规的控制理论做定量分析计算和进行控制,这时就要借助于新兴的智能控制。智能控制是人工智能、控制论和运筹学相互交叉渗透形成的新兴学科,它具有定量和定性相结合的分析方法,融会了人类特有的推理、学习和联想等智能。模糊控制是在智能控制中适用面宽广、比较活跃且容易普及的一个分支。人类在感知世界、获取知识、思维推理、相互交流及决策和实施控制等诸多的实践环节中,对知识的表述往往带有“模糊性”的特点,这使得所包含的信息容量有时比“清晰性”的更大,内涵更丰富,也更符合客观世界。1965年美国的控制论专家L.A. Zadeh教授创立了模糊集合论,从而为描述、硏究和处理模糊性事物提供了一种新的数学工具。模糊控制就是利用模糊集合理论,把人的模糊控制策略转化为计算机所能接受的控制算法,进而实施控制的一种理论和技术。它能够模拟人的思维方式,因而对一些无法构建数学模型的系统可以进行有效的描述和控制,除了用于工业,也适用于社会学、经济学、环境学、生物学及医学等各类复杂系统。由于模糊控制应用广泛、便于普及,不仅许多高等学校开设了模糊控制课程,而且不少工程技术人员也渴望了解和学习这方面的知识。集作者多年从事“模糊信息处理”、“模糊控制”方面的科研和教学经验,编写了这本模糊控制方面的入门书。本书在选材、安排上均遵从“入门”和“实用”的原则,着重介绍模糊控制的基本概念、基本原理和基本方法。本着“重视实用性和可操作性”的工程教育思想,内容选取和叙述形式不追求“理论的高深和数学推导的严谨”,在学术性和实用性发生冲突时,学术性服从实用性。本书主要内容包括模糊控制的数学和逻辑学基础、模糊控制器的设计、模糊控制系统的仿真及神经网络在模糊控制中的应用。在介绍模糊控制的理谂时,按照模糊控制的需要介绍必要的基础理论和基本知识,而不是把模糊控制仅仅看作模糊理论的一种应用,片面追求模糊理论的系统性和完整性,致使读者在模糊数学和模糊逻辑的演算上花费很多精力。在介绍模糊规则的生成方法时,不仅介绍了根据操作经验建立规则的常用方法,而且通过实例介绍了从系统的输入、输出数据中获取模糊规则的方法在介绍模糊控制器时,集中介绍了实用范围较广的两种类型模糊控制器:Maπdani型和 Sugeno型。前一种模糊控制器的输λ量和输出量都是模糊子集,输出量需要经过清晰化才能用于执行机构;而后一种模糊控制器的输入量是模糊子集,输岀量为数字量,可以直接用于推动执行机构考虑到科技工作者学习模糊控制理论时需要实践及其实际需求,把模糊控制理论和计算机仿真进行了有机融合,较详细地介绍了 MATLAB仿真技术及其在模糊控制方面的应用通过仿真练习,弥补了学习理论过程中难以实践的缺陷,加深对模糊控制的理解,也使在解WW. 9CAX COI决实际问题时有所借鉴,为进一步深入学习和应用模糊控制理论打下良好的基础。神经网络是智能控制的一个重要分支,本书简要介绍了它在模糊控制中的应用,着重举例介绍了 MATLAB中“自适应神经模糊系统”的使用方法。本书配有教学课件,可从北京交通大学出版社网站下载,或发邮件至 cbswce( jg.bitu.edu.cn或aushi@126.com索取。吴嫦娥编辑对本书的出版起了极大的推动作用,在此深表谢意!由于模糊控制领域的理论目前尚不成熟,还存在许多未解难题,虽然作者在“模糊领域”有十余年的科研教学经验,但毕竟水平有限,恳请广大读者不吝赐教!编者(E mail: aushixm(a 126. com)2008年3月WW. 9CAX COI目录第1章引言………………………………………………………(1)1.1自动控制理论的发展历程……………………………………………………(1)1.2智能控制概况………………(2)1.2.1智能控制的发展简况………………………………………………………………(2)1.2.2智能控制的几个重要分支…1.3模糊控制,,,,,.,,,………(6)1.3.1模糊控制解决的问题…(7)1.3.2模糊控制的发展简史…………………………………………………………(7)1.3.3模糊控制的特点及展望…(9)思考与练习题………………………………………………………………………(10)第2章模糊控制的数学基础……………………………………………………(11)2.1清晰向模糊的转换·(11)2.1.1经典集合的基本概念………………………………………………………………(11)2.1.2模糊集合………………………………………………………………(14)2.2隶属函数…………………………………………………………………………………(22)2.2.1确定隶属函数的基木方法…………………………………………………(23)2.2.2常用隶属函数2.3F集合的运算………………………………………………(26)2.3.1F集合的基本运算………………………………………………(26)2.3.2模糊集合的基本运算规律………………………………………………………(29)2.3.3F集合运算的其他定义………………………………………………………(31)2.4模糊关系及其运算……………………………………………………………(32)2.4.1经典关系……(32)2.4.2模糊关系………………………………………………………………(34)2.4.3模糊关系的运算…………………………………………………………………(382.4.4F关系的合成…………………………………(40)2.5模糊向清晰的转换…………………………………………………………(45)2.5.1模糊集合的截集………………………………………………………(45)2.5.2模糊关系矩阵的截矩阵…(47)2.5.3模糊集合转化为数值的常用方法…(47)思考与练习题………………………………………………………………………(51)第3章模糊控制的逻辑学基础……………………………………………………………(53)3.1二值逻辑简介……………………………………………………………………(53)1判断WW. 9CAX COI3.1.2推理……………………………………………………………………(58)3.2自然语言的模糊集合表示……………………………………………………(59)3.2.1一些自然词语的F集合表示……………(59)3.2.2糢糊算子…………………………………………………………………(60)3.3模糊逻辑和近似推理……………(63)3.3.1模糊命题……………………………………………………(64)3.3.2常用的两种基本模糊条件语句…………………………………………………(65)3.3.3近似推理及其合成法则…(74)3.4T-S型模糊推理…………………………………………………………(81)3.4.1双输入、单输出系统的T-S型糢糊推理模型…………………………………(81)3.4.2MISO系统的TS模型………………………………………………………………(85)思考与练习题…(87)第4章模糊控制器的设计………………………………………(89)4.1模糊控制系统的基本组成………………(89)4.1.1从传统控制系统到模糊控制系统…………………………………………………(89)4.1.2模糊控制器的结构………………………………………………………………(92)4.2 Mamdani型模糊控制器的设计…(93)4.2.1 Mamdani型模糊控制器的基本组成…………(93)4.2.2量化因子和比例因子……………………………………………(94)4.2.3模糊化和清化……………………………………………………(98)4.2.4模糊控制规则……………………………………………………………………(102)4.2.5模糊自动洗衣机的设计…………………………(113)4.3T-S型模糊控制器的设计…(117)1.3.1T-S型模糊模型(118)4.3.2T-S型模糊系统设计要点………………………………………………………(121)4.4F控制器和PID控制器的结合…(121)4.4.1F-PID复合控制器……………………………(121)4.4.2F-PID复合控制器的其他形式………(122)4.4.3用模糊控制器调节PID控制器的参数………………………………(123)思考与练习题……………………………………………………………………………(125)第5章模糊控制系统的 MATLAB仿真…………………………………(127)5.1 Simulink仿真入门……………………………………………(127)5.1.1 MATLAB中的仿真模块库…………………………………………(128)5.1.2仿真模型图的构建……………………………………………………(135)5.1.3动态系统的 Simulink仿真……5.2模糊推理系统的设计与仿真………(149)5.2.1模糊推理系统的图形用户界面简介·..···,····,·············………(149)5.2.2模糊推理系统编辑器…………………………………………………………(150)2.3隶属函数编辑器…(156)WW. 9CAX COI5.2.4模糊规则编辑器…(161)5.2.5模糊规则观测窗…………(172)5.2.6FIS输出量由面观测窗………(179)5.2.7用GUI设计 Mamdani型模糊系统举例……………………………………(182)5.2.8用GUI设计 Sugeno型模糊系统举例……………………………………(189)5.3模糊控制系统的设计与仿真…………………………………………………(196)5.3.1FIS与 Simulink的连接………………………………………………………(196)5.3.2构建模糊控制系统的仿真模型图…(200)5.3.3通过仿真对系统进行分析……………………………………………(208)考与练习题……………………………………………………………………………………(218)第6章神经网络在模糊控制中的应用……………………………………………(219)6.1神经网络的基本原理…(219)6.1.1神经网络发展历史…(219)6.1.2神经元的生理结构……………………………………………(221)6.1.3神经元的数学模型…………………………………………………………(222)6.1.4人工神经网络模型…………………………………………………………(224)6.1.5神经网络模型的学习方法……(225)6.1.6BP型神经网络原理简介……………………………(227)6.2神经模糊控制……着,,,着……………(228)6.3用自适应神经模糊系统建立FIS…………………………………………(229)6.3.1 ANFIS图形用户界面简介,,,,·,.,··.,,.,·,·,着,,里,,,,,,·,,··,,,·,.·,·,,·(229)6.3.2用 Anfis建立FIS的步骤…………………………………………(233)6.3.3用 Anfis建立FIS举例……………………………………………………(245)思考与练习题(255)参考文献………………………………………………………………………………(256)ⅢlWW. 9CAX COI第1章引言本章介绍自动控制学科发展的历史概况,叙述从开环控制到智能控制的发展进程,并简单介绍智能控制的几个主要分支——专家控制、模糊控制和神经网络控制1.1自动控制理论的发展历程自动控制就是在没有人直接参与的情况下,利用外加的设备或装置(控制器),使机器、设备或生产过程(被控对象)的某个工作状态或参数(被控量),能够自动地按照设定的规律或指标运行的设备或系统。自从美国数学家维纳在20世纪40年代创立控制论以来,自动控制从最早的开环控制起步,然后是反馈控制、最优控制、随机控制,再到自适应控制、自学习控制、自组织控制,直发展到自动控制的最新阶段——智能控制。整个自动控制理论的发展进程,是由简单到复杂、由量变到质变的辩证发展过程,如图1-1所示。智能控制但会买继智能控制自学习控制自适应控制,鲁棒控制现代控随机控制最优控制确定性反馈控制开环控制控制系统的复杂性图1-1控制科学的发展过程传统控制理论经历过经典控制理论和现代控制理论两个具有里程碑意义的重要阶段,它们的共同点都是基于被控对象的清晰数学模型,即控制对象和干扰都得用严帑的数学方程和函数表示,控制任务和目标一般都比较直接明确,控制对象的不确定性和外界干扰只允许在很小的限度内发生个系统的数学模型就是对系统运动规律的数学描述,微分方程、传递函数和状态方程是描述控制系统的三种最基本的数学模型,其中微分方程是联系其他两者的纽带。经典控制理论主要研究单变量、常系数、线性系统数学模型,经常使用传递函数为基础的频域分析法;现代控制理论主要研究多输入-多输出线性系统数学模型,经常使用微分方程或状态方WW. 9CAX COI模糊控制及其 MATLAB仿真程为基础的时域分析法。传统控制方法多是解决线性、时不变性等相对简单的被控系统的控制问题,这类系统完全可以用线性、常系数、集总参量的微分方程予以描述。但是,许多实际的工业对象和控制目标常常并非都是如此理想,特别是遇到系统的规模庞大、结构复杂、变量众多,加之参数随机多变、参数间又存在强耦合或系统存在大滞后等错综复杂情况时,传统控制理论的纯粹数学解析结构则很难表达和处理。由于硏究对象和实际系统具有非线性、时变性、不确定性、不完全性或大滞后等特性,无法建立起表述它们运动规律和特性的数学模型,于是便失去了进行传统数学分析的基础,也就无法设计出合理的理想经典控制器。况且,在建立数学模型时一般都得经过理想化假设和处理,即把非线性化为线性,分布参数化为集中参数,时变的化为定常的,等等。因此,数学模型和这些实际系统的巨大差距,使之很难对其实现有效的传统自动控制,于是便出现了某些仿人智能的工程控制与信息处理系统,产生和发展了智能控制大量的生产实践表明,有许多难以建立数学模型的复杂系统和繁难工艺过程,可以由熟练技术工人、工程师或专家的手工操作,依靠人类的智慧,能够获得满意的控制效果。例如,欲将一辆汽车倒入指定的车位,确实无法建立起这一过程的数学模型。然而熟练的司机却可以非常轻松地把它倒入预定的位置。类似的问题使人们自然想到,能否在传统控制中加人人类的认知、手工控制事物的经验、能力和逻辑推理等智能成分,充分利用人的操作技巧、控制经验和直觉推理,把人的因素作为一个有机部分融入控制系统呢?能否根据系统的实际输入、输出类似于熟练技工那样进行实时控制,甚至使机器也具有人类的学习和自适应能力,进而用机器代替人类进行复杂对象和系统的实时控制呢?1.2智能控制概况20世纪60年代以来,由于空间技术、计算机技术及人工智能技术的发展,控制界学者在研究自组织、自学习控制的基础上,为了提高控制系统的自学习能力,开始注意将人工智能技术与方法应用于工程控制中,逐渐形成了智能控制。1.2.1智能控制的发展简况所谓智能控制,就是通过定性和定量相结合的方法,针对被控对象和控制任务的复杂性、不确定性和多变特性,有效自主地实现繁杂信息的处理、优化和判断,以致决策,最终达到控制被控系统的目的。智能控制的诞生1966年,J.M. Mendal首先提出将人工智能技术应用于飞船控制系统的设计;其后,1971年,美籍华人科学家傅京逊首次提岀智能控制这一概念,并归纳了三种类型的智能控制系统①)人作为控制器的控制系统:这种控制系统具有自学习、自适应和自组织的功能。②人-机结合作为控制器的控制系统:机器完成需要连续进行的、快速计算的常规控制任务,人则完成任务分配、决策、监控等任务。③无人参与旳自主控制系统:用多层智能控制系统,完成问题求解和规划、环境建模、WW. 9CAX COI第1章引言传感器信息分析和低层的反馈控制任务,如自主机器人。1985年8月,美国电机及电子工程师学会( Institute of Electrical and Electrical Enginers,IEEE)在纽约召开了第一届智能控制学术讨论会,随后成立了智能控制专业委员会;1987年1月,在美国举行第一次国际智能控制大会,标志着智能控制领域的形成。智能控制即含有人类智能的控制系统,它具有学习、抽象、推理、决策等功能,并能根据环境(包括被控对象或被控过程)信息的变化做岀适应性反应,从而使机器能够完成以前只能由人可以完成的控制任务。2.智能控制的三元论智能控制是一门交叉学科,傅京逊教授于1971年首先提出智能控制( Intelligent Control,IC)是人工智能与自动控制的交叉,即智能控制的二元论。在此基础上,美国学者G.N. Saridis于1977年引入运筹学,提出了三元论的智能控制概念,认为智能控制是人工智能( Artificial Intelligence,AⅠ)、自动控制( Automatic control,AC)和运筹学(Operational research,OR)等形成的交叉学科,即IC=AI∩AC∩OR,它们的含义如下:信号处理、形式语言AI—人工智能,是一个用来模拟人启发推理规划、调度、管理类思维的知识处理系统,具有记忆、学习、人工智能运筹学信息处理、形式语言、启发推理等功能学习、记忆可以应用于判断、推理、预测、识别、决智能控制协调、管理策、学习等各类问题;AC自动控制,描述系统的动力学自动控制特性,实现无人操作而能完成预设目标的一优化、动力学、动态反馈种理论体系,一般具有动态反馈功能;OR—运筹学,是一种定量优化方法,如线性规划、网络规划、调度、管理、优化决策和多目标优化方法等。图1-2智能控制的三元论示意图基于三元论的智能控制概念如图1-2所示。现在,为多数人所接受的三元论智能控制概念,除了“智能”与“控制”外,还强调了更高层次控制中的调度、规划和管理作用,为分层、递阶智能控制提供了理论依据。3.智能控制的特点在分析方法上具有定量与定性相结合的智能控制,应该具有以下一些功能。1)学习功能智能控制器能通过从外界环境所获得的信息进行学习,不断积累知识,使系统的控制性能得到改善。2)适应功能智能控制器具有从输入到输岀的映射关系,可实现不依赖于模型的自适应控制,当系统某一部分出现故障时,仍能进行控制。WW. 9CAX COI
- 2020-06-01下载
- 积分:1
STM32移植到GD32的注意事项
GD32的性价比和稳定性都很高。我更喜欢用GD32.。但不是100%兼容的。需要注意一些细节。2.内部 Flash1)芯片设置读保护用法描述由于GD的Fash是自己的专利技术,STM的Fash是第三方提供的,所以GD的 Flash和STM的Fash有些许差异。GD的擦除时间会长一点解决方法在写完KEY序列以后,需要读该位,确认key已生效。所以,这里应该插入While(! (FLASH->CR &0x200);//Wait OPTWRE或可简单插入两个NOPNOPONOPO在ST库中,只有FLASH Status FLaSH Erase Option Bytes(void)FLaSH Status FlaSH ProgramOption Byte Data(uint32 t Address, uint8 t DataFLASH Status FLASH_ Enable WriteProtectionuint32 t FLASH PagesFLASH Status FLASH ReadOutProtection (Functional State New State)四个函数需要修改。2)IAP在应用中编程描述GD32由于有fash的0访问时序,同SM32在Fash的Ease和 Program上存在差别,GD32的 Erase和 Program时间比STM32的稍微长些建议对 Erase和 Progran时间进行修改解决方法将宏定义井 define erase timeout(luint32 t)OX000B000O)#define ProgramTimeout(uint32_t)ox00002000修改为:#define erasetimeout((uint32_t)OX00OFFFFF#define ProgramTimeout(uint32 t)OxOOOOFFFF备注: Erase和 Program时间宏定义在stm3210 x flash. c源文件中路径: braiesSTM32F10 x Std Periph Driversr)3)用IAR下载配置解决方法在批量牛产的时候首先会烧写一个USB的boot,这个boot自动运行后在由上位机软件进行烧写应用程序。如果boot程序不能自动运行则需要重新插拔次电源。给生产造成一些麻烦。产生不能自动运行程序的原因是如果程序设置读保护的话需要等待 FLASH CR的第9[ OPTWRE]位为1.如果没有置位的话继续执行就会出错。由」ST的执行速度慢,程序执行到读 FLASH CR寄存器的时候该位已经置1,GD的执行速度比较快,程序运行到这的时候该位还没置1,因此需要在 FLASH ReadOut Protection函数里面添加一些轮询该位为1或者加延时3.ISP烧写软件1)ISP烧写,建议使用官方烧写软件性述芯片内部同有区别解决方法建以到下载最新版本的另外也有专门的烧写软件(可以到论坛下毂如果使用自制的软件或脱机编程器,实现和完全兼容,建议修改以下参数。页擦除等待超时时间增加至整片擦除等待超时时间增加至左右字编程等待超时时间增加至,臾编程等笭超时时间增加至I/0日1)I0口外部中断使用方法措述在关闭期间,如果外部引脚有电平的变化,在使用MR打开中断后会马上进入中断服务程序。理论是打开中断前,不管管脚是否有电平的变化,都不会影响到打开后的中断响应。解决方法所以解决方法就是通过禁用上升沿或者下降沿检测寄存器来开关中断,不能使用IMR屏蔽奇存器。程序如下关闭沿检测,以达到关闭中断的目的,下降沿使用寄存器,上升沿使用寄存器2)在待机模式,PA8引脚特殊设置描述在使用低功耗的情况下,PA8会被MCU在内部被设置为地PA8复用为MU内部频率输出,超低功耗设时需要悬空解决方法在待机模式,PA8悬空不用3)低功耗下必须注意描述在使用低功耗情况下,把软件全部端口(AF)时钟关掉,无论是否有该端凵。4)当有脉冲群冲击管脚摧述需要在在进入中断后关闭中断4.定时器1)定时器输入捕获模式需要软件清中断描述sTM定吋时器输入捕获模式默认能硬件清中断,GD为了更加严格要求配置,需要做软件清中断解决方法软件清除标志位2)定时器向上脉冲计数模式设置述定时器的用法差异解决方法脉冲计数模式下,装载值必须设置为比预期值大,否则不计数在ST上如果重载值不设置(初始为0)的时候,CNT可以正常计数。在GD上如果重载值不设置保持初始为0的时候,会因为重载值为零,即便是来一个脉冲也会导致所有的寄存器复位从而不能正常计数。型号GD32F1系列MCUF|ah256B8及以上的型号)3)TIM、ADC模块描述Tmer、ADC模块的触发信号宽度要求解决方法|由于内部有高速和低速两条外围总线,Tmer、ADC模块和其他外设共同使用这两个总线。GD32F103/101系列Fash128KB及以下的型号, Timer、ADC等模块识別触发信号的条件是触发信号宽度大于模块所在总线的时钟宽度5.串口 USART1) USART连续发送数据字节有空闲位带述字节间有空闲位解决方法|对于一般的通讯米说,不会有影响,只对于一般在通讯上有特殊协议的,才会产生数据不准确的情况所以,特定情况,修改程序6.I2C总线1)硬件L2C特殊配置述GD的C相对STM的来说要少一个标志位解决、宏地址定义改交方法2、硬件I2C在会在向从机发送7bits地址完成后,从札还没来得及识别。(看客户应用)我们可以在发送完7bits后加个延时,让从机完全识别I2C Send7bitAddress(I2C1, EEPROM ADDRESS, I2C Direction TransmitterintOfffhile(i --3、检测ADDR不能使用I2 C Checkevent函数,因为他会清除ADR,可以使用I2 C Get FlagStatus函数就是把while(! I2C CheckEvent(I2C1I2C EVENT MASTER TRANSMITTER MODE SELECTED))Ey while(! I2C GetFlagStatus(I2C1, I2C FLAG ADDR))4、还有个关于编程步骤的严谨性,跟STW想比,我们是先 Clcar ack,再 Clear Arrd。7.ADC采集1)ADC采样设置述ADC启动解决方法|分三个方面时写入后,需要等待一段时间,如果用库的话就在 ADC CMD后面加20us左右的延付如果采用中断获得采样数据后,需要软件清除中断。8. SDio1) SDIO DAT3pin的在1 bit bus mode和4 bit bus mode下的配置摧述1、SD|O在1 bit bus mode下,DAT3pin是低电平,这样会导致 SD Card进入SP!模式。原因:初始化失败的原因主要是因为GD32的芯片SDO的DAT3∏存在BUG2、在4位模式下,通过上面的方法,程序能止常初始化,但不能正常读写SD卡原因:因为DAT3∏在前面已经配置成推挽输出,所以在4位模式下,不危正常读下。在调用4位模式前,把DAT3的端凵配置成复用推挽输入即可解决问题解决方法「1、1 bit bus mode的解决方法:建议在使能之前,先把配置成推挽输出,)且要置成高电平,使保持高电平即可2、4 bit bus mode的解决方法:在调用4位模式前,把DAT3的端口配置成复用输出即可解决问题。2)程序在刚烧完后能正常读写SD卡,断电再上电后,SD卡初始化失败,需要手动复位一次后才正常描述在某些SD卡中,GD32断电再上电,会引起SD卡上的时钟信号不正常,导致SD卡发送命令失败。解决方法在程序中,打开时钟后,增加一小段延时,以保证下时钟信号稳定。这个延时添加的地方:在即的配置文件中,然后在这个函数中找到就在这个后面加个延时。10. USBA, USB OTG1)客户使用的原工程时需要注意几点解|1、在中,增加如下图红色字体语句for (1=0; 18; i++) EPli= GetEndPoiNT(i)for(i=0:iregs. HC REGS [num]->HCCHAR, hcchar d3 2)pdev->host hc Status =HC NAK而V2.1.0版本的NAK处理过程如下else if (hcint b nak)if(hcchar b. eptype = EP TYPE_ INTR)UNMASK HOST INT CHH(num)USB OTG HC Halt(pdev, numelse if ((hcchar. b. eptype = EP TYPE CTRL)(hcchar b eptype = EP_ TYPE BULK))A re-activate the channel *hcchar, b chen =1hcchar b chris =0USB OTG WRITE REG32(&pdev->regs. HC REGS [num]->HCCHAR, hcchar d32)pdey->host HC Status [num]=HC_NAKCLEAR HC INT(hcreg, nak)唯一的区别就是 CLEAR HC INT( here,nak)的位置,在Ⅵ1.0.0版本中对于CTRL和BUK端点的NAK中断没有清除NAK,我们的芯片会因此产生多次IN传输的请求,导致数据传输错误。改为V2.1.1的写法后传输正常。(注意 HC Status在V2.1.0是数组,在Ⅵ1.0.0是单个数据,直接拷贝的话要去掉后面的[num])B.USB外设的工作频率有限制摧述有最低工作频率的要求,也就是APB1分频后的时钟必须大于12MHz,比如HCLK为56MHz,APB1的最大分频系数为4,56/4=14MHz,可以正常工作。11 SPI1)输入与输出配置要求(STM32不需要如此要求)解决丨GD32在使用SP时,o的配置必须严格遵守主从模式下的输入与输出配置,而方法STM32无此要求,相关代码如下主机模式下|o配置(主机以SP为例):GPIO InitStructure gPio Mode gPio Mode af plGPIO_ Init Structure GPIo Speed GPlO Speed 50MHzGPIO InitStructure. GPio Pin= GPlO Pin 5 GPIO Pin_ 7;GPIO Init(GPIOA, &GPIO InitstructureGPio Init Structure gPio Mode gPio Mode IN floating:GPio InitStructure gpio Pin gpio pin 6GPIO Init(GPIOA, &GPIO InitStructure)从机模式下o配置(从机以SP2为例)GPIo Init Structure GPio Mode gPlo Mode IN FloatingGPIO InitStructure GPIO Speed= GPl Speed 50MHzGPIO_InitStructure GPIO_ Pin GPIO Pin_13 GPIO_ Pin_15GPIO Init(GPIOB, &GPIO InitStructure)gPio Initstructure gpio mode gpio mode af pp.GPIO InitStructure. GPio Pin= GPIo Pin 14:GPIO_Init(GPIOB, &GPIO_Initstructure);3)在GD32的SP的时钟信号,空闲状态需要配置成高电平,以保证数据的稳定性,具体代码如下:红色字体代码解决SPI_ InitStructure SPl Direction =SPI_ Direction_ 2Lines fullDuplex;方法SPI InitStructure SPl Mode SPi Mode master.SPI Initstructure SPl Data Size= SPl Data Size 8bSPlInitStructure SPl_CPOL= SPI CPOL HighSPl Initstructure SPl CPHA= SPI CPHA 2EdgeSPI InitStructure SPI NSS= SPI NSS SoftSPI InitStructure SPl BaudRate Prescaler =SPI Baud Rate Prescaler 256:SPI Initstructure, Spi FirstBit= SPI FirstBit MSBSPI InitStructure SPl CRCPolynomial =7;SPl Init(sPl1, &SPl Initstructure);4)当作为从机时,在GD32中,时钟信号必须为8的整数倍。例如:红色字体代码解决SPI_InitStructure SPl_ Direction =SPl_ Direction_ 2Lines_ Full Duplex;方法SPI InitStructure. SPl Mode= SPl Mode MasterSPI InitStructure SPSPi Data Size 8SPl InitStructure SPl CPOL= SPI CPOL High;SPI Init Structure. SPl CPHA SPI CPHA_ 2EdgeSPI Initstructure SPl NSS= SPI NSs SoftSPI Initstructure Spl BaudRatePrescaler= SPl BaudRatePrescaler 256SPI InitStructure. SPl FirstBit= SPl First Bit MSBSPl Initstructure SPl CRCPolynomial =7;SPI Init(SPI1, &SPl InitStructure)5)在GD32中,不能使用SPLS_FLAG_BSY该位来判断SP总线数据是否接收或发送完成12.看门狗1)进入SToP模式前打开看门狗,通过RTc的ALR唤醒后,程序会不断被复位的现像摧述WDG内部有个 Reload信号,KEY奇器写AAA会使其拉高,过段时间自动拉低。在拉底之前进入STOP状态会使 Reload信号一直为高,等到退出SToP后也保持为高,之后再写AAAA没有办法让 Reload产生上升沿,也就没办法更新计数器了解决方法「进STOP之前不要 Reload,也可以调整下程序的顺序,把WwDG的配置放到RIC配置之前,效果是一样的。
- 2021-05-06下载
- 积分:1