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
动态贝叶斯网络推理学习理论及应用-肖秦琨 高嵩 高晓光.pdf
动态贝叶斯网络推理学习理论及应用;动态系统;可靠性评估;故障诊断;贝叶斯网络建模;DBN0212/642007动态贝叶斯网络推理学习理论及应用肖秦琨高嵩高晓光著所·萑宫散社北京图书在版编目(CP数据动态贝叶斯网络推理学习理论及应用/肖秦琨,高嵩,高晓光著.一北京:国防工业出版社,2007.10ISBN9787-11805323-4I.动.Ⅱ.①肖.②高.③高..Ⅲ.贝叶斯推断一研究Ⅳ.0212中国版本图书馆CIP数据核字(2007)第122784号※阍所·宫版社出版发行(北京市海淀区紫竹院南路23号邮政编码100044)京南印刷厂印刷新华书店经售开本850×1168132印张9字数233千字2007年10月第1版第1次印刷印數1-3000册定价20.00元(本书如有印装错误,我社负责调换国防书店:(010)68428422发行邮购:(010)68414474发行传真:(010)68411535发行业务:(010)68472764前言不确定性理论在人工智能、机器学习、自动控制领域已经得到越来越广泛的应用。本书以当前国际上不确定性研究领域的核心工具——动态贝叶斯网络为线索,进行了动态网络推理算法、平稳系统动态贝叶斯网络结构学习模型设计、非平稳系统动态网络变结构学习模型设计、基于概率模型进化算法的动态贝叶斯网络结构寻优算法的研究。推理算法以隐变量作为划分依据,讨论了离散、连续混合模型的推理算法,并进行了算法复杂度及应用领域的讨论;结构学习研究首先从度量体制入手,讨论了动态网络度量体制的可分解性,提出了平稳及非平稳系统网络结构学习模型,以及基于贪婪算法思想的遗传算法寻优思想;最终将推理及结构学习理论用于无人机路径规划、战场态势感知、动态数据挖掘、自主控制领域,并通过大量仿真检验。本书的研究工作得到了西安工业大学专著基金及国家自然科学基金重大研究计划(90205019)的资助。本书全面系统地介绍了动态贝叶斯网络的相关理论,重点介绍了动态网络的经典应用和国内外的新发展。全书共分9章。第1章概述了动态贝叶斯网络的产生与发展、基本操作及表达。第2章和第3章为本书的理论基础部分,首先从静态网络已经取得的理论成果及研究内容人手,由浅入深引出动态贝叶斯网络的基本概念及研究方向,确定本书将要解决的主要问题:DBN推理问题和连续变量的DBN结构学习问题。第4章在第3章基础上,详细讨论了三类动态贝叶斯网络的推理即隐变量离散、隐变量连续隐变量混合DBN推理;隐马尔科夫模型是所有离散动态网络的基础故首先介绍其表达及推理,由此派生出其他离散动态网络,并讨论了如何将复杂离散网络转化为简单HMM的方法,通过算法复杂度实验分析,明确了离散动态网络的相应属性,得出了相应结论,为合理选择DBN推理算法提供依据;在推理中,若系统参数未知或为时变系统,必然涉及参数学习,故在讨论三类网络的推理中亦涉及参数学习问题。第5章从静态网络结构度量机制入手,讨论并推导出动态贝叶斯网络结构用于网络结构度量的BC及BD度量机制;通过描述基于概率模型进化算法的构图基础,引出动态贝叶斯网络结构学习机制,即基于贝叶斯优化(BOA)的动态网络结构寻优算法,BOA算法的关键是根据优良解集学习得到动态贝叶斯网络,以及根据动态贝叶斯网络推理生成新个体,前者更为重要,按照本书提出的基于贪婪算法思想的遗传算法解决动态网络学习,然后应用动态贝叶斯网络前向模拟完成后一步。第6章在此基础上,刻画了基于BD度量体制的平稳动态系统DBN结构学习模型设计,并通过仿真验证了其有效性,针对非平稳随机系统DBN的结构学习模型,提出了一种自适应窗口法用于在线自适应学习变结构DEN结构,仿真结果可行。第7章在第4章DBN推理理论的基础上,从以往UCAV路径规划中使用的方法以及涉及的定义、术语等出发,讨论了静态路径规划、动态路进规划及空间路径规划三方面的基本问题,通过对原始 Voronoi图的改进,提出了平面改进型Voronoi图、空间改进型 Voronoi图的概念,以及平面及空间动态路径重规划区域原则等,为动态路径规划提供有力的整体构型支撑进而应用前几章理论基础,建立基于DBN的战场环境感知模型,仿真结果均表明了构图及动态决策模型的正确性。第8章在DN推理及结构学习的理论基础上,将其用于自主优化及动态数据挖掘。将BOA及基于概率模型的遗传算法的静态图形的优化机制进行推广,提出了一种动态优化的新方法,利用DBN作为t到t+1代转移网络,适时改变优化的基本条件,实时确立新的种群及优化的方向使得自主智能体在无人干预下顺利完成一系列复杂任务成为可能,将变结构DBN结构学习模型设计用于动态数据挖掘,实时确定个因素之间的关系。第9章通过两个典型的应Ⅳ用实例,将DBN推理学习理论进行融合,并用于实际模型。附录给出了与DBN结构度量相关定理、性质的证明,为读者进一步研究和学习动态贝叶斯网络提供参考。本书是作者近年来潜心学习和研究国内外不确定性算法理论、方法和应用成果的一个总结。在本书的编写过程中,得到了西安电子科技大学焦李成教授和清华大学戴琼海教授及英国BankUniversity陈大庆教授的热心指导和鼓励,新加坡南洋理工大学的王海芸博土后审阅了书稿,并提出了许多宝贵意见,特向他们表示衷心的感谢。由于涉及内容广泛及限于作者的学识水平,书中疏漏和不当之处在所难免,希望读者不吝赐教指正。作者目录第1章图模型与贝叶斯网络1.1图模型简介1.2动态贝叶斯网络…1.3动态贝叶斯网络应用研究1.3.1动态时序数据分析与挖掘157781.3.2无人机的态势感知与路径规划1.3.3.进化算法与动态贝叶斯网络混合优化………10第2章静态贝叶斯网络2.1静态贝叶斯置信网络2.2贝叶斯网络的特点与应用范围152.3贝叶斯网络的研究内容162.3.1计算复杂性162.3.2网络结构的确定问题…2.3.3已知结构的参数确定问题……182.3.4在给定结构上的概率计算…………192.3.5贝叶斯网络推理算法…19第3章动态贝叶斯网络基础283.1从静态网到动态网283.1.1概述·28Ⅵ3.1.2推导293.1.3动态贝叶斯网络表达………………313.2动态贝叶斯网络的研究内容353.2.1动态贝叶斯网络推理……………………363.2.2动态贝叶斯网络学习…39第4章动态贝叶斯网络推理…464.1隐变量离散动态网络推理……464.1.1模型数学描述464.1.2隐马尔科夫的研究内容484.1.3隐马尔科夫推理学习仿真…534.1.4隐马尔科夫其他拓扑形式…564.1.5一般离散动态网络和隐马尔科夫关系………………584.2动态贝叶斯网络推理算法性能分析604.2.1动态网络转化隐马尔科夫仿真…………614.2.2离散动态网络推理算法比较仿真…634.2.3连续动态网络推理比较仿真724.3模糊推理与隐马尔科夫结合炮火校射754.3.1概述………………………754.3.2模糊动态网络环境感知框架754.4隐变量连续动态网络推理794.4.1模型数学描述…………794.4.2卡尔曼滤波图模型推理………804.5混合隐状态动态贝叶斯网络…………834.5.1模型数学描述…834.5.2混合动态贝叶斯网络推理…864.5.3混合动态贝叶斯网络学习89第5章动态贝叶斯网络结构学习算法…………………915.1动态贝叶斯网络结构度量体制………915.1.1概述915.1.2动态网络的贝叶斯信息度量………935.1.3动态贝叶斯网络BD度量965.2动态贝叶斯网络度量分解性能分析985.3构建动态网络结构寻优算法1145.3.1基于概率模型的进化算法1155.3.2基于贝叶斯优化构造动态网络结构算法1165.3.3学习动态贝叶斯网络…1185.3.4动态臾叶斯网络推理…1275.4基于贝叶斯优化构建动态网络结构算法仿真………128第6章动态贝叶斯网络结构学习模型…1346.1平稳系统动态网络结构学习模型设计1346.1.1模型设计1356.1.2仿真试验1386.2变结构动态网络自适应结构学习模型设计………1446.2.1模糊自适应双尺度…1446.2.2动态系统非平稳程度和平稳性的测量……1516.3非平稳系统网络结构学习仿真试验153第7章基于动态贝叶斯网络的路径规划……1657.1无人机平面静态路径规划·…1657.1.1基本概念……1657.1.2基于相同威胁体的路径规划…166Ⅷ
- 2021-05-06下载
- 积分:1