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
支持向量机 邓乃扬
这本书是中科院的邓乃扬、田英杰老师所写,想要深入学习SVM相关理论和算法的同学可以看看这本书,我个人这本书非常好。数据挖掘源于数据库技术引发的海量数据和人们利用这些数据的愿望.用数据管理系统存储数据,用机器学习约方法分析数据、挖掘海量数据背片的知识,便促成了数据挖掘( data mining的产生.慨括地讲,数据挖掘的任务是从大型数据库或数据仓库中提取人们感兴趣的、事先知的、有用的或潜在有用的信息支持向量机( suppoort vector machine.SVM是数据挖握中的项新技术,是借助于最优化方法解决机器学习问题的新工具它最初于20世纪90年代由 Vapnik提出,近年来在其理论研究和算法实方宙都取得∫突破性进,开始成为克服维数灾难”和“过学习”等传统困难的有力手段虽然它还处于飞速发展的阶段,但是它的理论基础和实现途径的基本框架已经形成。白200年开始,国外已续有几本专蓍出版.据我们所知,本是国内第一本专门对它进行全面完整介绍和论述的书籍本书王要以分类问题(模式识别,判别分析)和回归问题为背景,系统阐述支持量机和相应的最优化方法.各章的主要内容如下:第1章介纲最优化问题及其基本理论.第2章对分类闻题和回归问题直观地导出最基本的支持向量机.第3章介绍核的理论,这是推广基本的支持向量机的关键,也是通过线性问题求解非线性问题的基础.第4章介绍统计学习理论,讨论支浡向量机的统计学理论基狲第5章和第6章分别详细研究支持向量分类机和支持向量回U机.第7章介绍实现支持向量机的最优化算法.第8章讨论支持向量机的应用,包括解决实际问题时的一些处理方法和一些应用实例本书包括了我们自己的研究工作例如,在做为支持向量机基础的原始问题和对偶间题解的关系上,我们发现,当前文献的论述存在着逻辑上的缺陷本书第次在完严密的逻辑基础上完善了各种支持向量机中的最优化问题的理论体系此外,作为求解支持向量机中优化问题的方法,本书介绍了我们自已的研究成果如处理大型问题的 Newton-PCG型算法.另外还立说明,本书还包含了我们讨论班成员的若干研究工作本书所设定的读者包括关心理论与应用两方面的人土,对于支持向量机的理论,4有系统而严谨的论述;作为使用支持向量机的入「,有直观的谎明.实际上我们特别强调该书的叮读性,强调崑观对理解问题实质的重要作用.我们通常总是首先用图像等直观手段引进各种概含、方法和结论,并特别注意对它们的本质给予形象的解释和说明,最后给出其严格证明.仅仅关心实际应用的读者,略去这些证明以及若于理论结论,仍可以对所介绍的方法的本质有一个概括的理解本书对有关领域具有高等数学知识的实际下作者是一本实用读物.我们希望本书的出版,能普及和推广支持向量机在多种宴际领域中的应用,也能促进我对支捋向量机的深入研究,特别是促进优化界朋友们的关心与参与本书得以出版,我们要感谢中国科学院科学出版基金和华夏英才基金的资助,冋时乜要感谢十国农业大学各级領导的支持利重点课程建设的资助.本书已被选为中国衣业大学研究生系列教材,我们还要感谢国家自然科学甚金多年来对我们研究工作的资助.本书作者曾致力于最优化方法的饼究多年,儿年前片始组线和领导讨沦班,学与研究数据挖掘利支持向螳柷.除本书位作耆外,讨论班的成以还有上来生教投、薛毅教授、钟萍剴教授、经玲舭教授、张春华、杨志民、刘广利、苏时光等多入,狂这里我们要将别感谢钏萍副教授和张春华.比外,我们还要媵谢刘宝光和张建中两位教授以及梁玉梅、张梅梅两位同学,他们都对本书提供了帮助臼于作者水平所限,书中难免有不要之处,欢迎读者批评指正符号表R实数集合R绁欧氏字间LEi, g洲冻点T={(x1,w)…,(x,y)}训练集洲练点个数输入空间输出空阊x洲练点所仁空间(X×y)练集所在竿间输入向量(输人广模式问量x的第个分量Hilbert空间中的向量x向量x的第个分量输出指标(输出)与的内积?内积空间, Hilbert空间={:1,…,xt输入空间中的个点组成的集合2={xHilber空间中的l个点组成的集合d输人空间到 Silbert空间的映射权向量权向量u的第分量Hi]bert空间中的权向量权向量w的第个分量b网值Co凸壳sang符号函效k(I核函数核矩阵〔Gram矩阵Fp-范数2-范数hv维惩罚参数收缩壳的参数白蚣对数pe底为2的对数将号表松弛变量松弛变量的第x个分量间隔对偶变量, Lagrange乘子寸偶变量的第i个分量通常获示概率分布概率百录序言符号表第1章最优化问题及其基本理论…l■1口■■會■■■■血PPP中11最优化问题1,1,1最优化问题实例1.12最优化问题1.1.3凸最优化12最优生条件1512上无约束问题的最优性条件122约束问题的最优性彖件181.3对偶理论∴131最大最小对偶132 Lagrange对偶■■q381,4注记参考文献…4了第2章求解分类问题和回归问题的宜观途径21分类问题的提出19211例子(心脏病诊断〕4921.2分类问题和分类学习机22线性分类学习机53221线性可分问题的线性分划222近似线性可分闻题的线性分划2.3支持向量分类机…231从性分划到二次分划23.2二次分划算法的简化74233非缓性分划的基本途径24线性回归学习机n+“dk+■啬啬■■■■■F番24.1回归问题242线性回归问题与硬E-带超平面243硬E-芾超平面的构造244硬s-#超平面的推36245线性支持向量回止机25支持向量归机26注记9参考文献第3章核31带述相似性的工具—内积963⊥.1直观的相似程度与内积312支持向量分类机中的相似与内积,983.1.核函数的选取9832考项式空间和多听式核32.1有序单项式空间32.2元序单项式空间1323 FIlbert空间与多项式核函教10433 Mercer核·…··105331半正定矩阵的特征展开15332 Mercer定理与 Mercer核10g34正定核1123.41正定核的必要条件·…·113342正定核的充分条件113343正定核的特征344再生核lber空间11634.5正定核与 MMercer核的关系…73.5核的构造…··11了3.51核的构造原则,·117352落用的几种核函数j2036注记…··:122参考文献123第4章推广能力的理论估计41失函数和期望风险1254.11概率分布125412损失函數413期胡凤险……13242求解分类问题的一种途径和-个算法模型136421分类问题的一个自然的数学提法1:f422求解分类问题的途径141423-个学习算法4.3VC雏44学」算法在概率意义下的近似正确性14G45一致性概念和关键定理日录16结构风险最小化,,,,1524了甚于问隔的推广估计15448注记∵■■■参考文献(2第5章分类问题…51最大间隔原则51.1绒性叮分问题的最大河隔原则52扰动意义下的几何解释■■152找性可分支持向量分类机6i6521线性可分问题的规范超平面522原始最优化问题…523对偶问题及其与原始问题的关系69524线性可分支持向量分类机及其理论基础I7353线性支持向量分类机l7生531原始问题17生532对偶问题及其与原始问题的关系179533线性支持向量分关机及其理论基础l83534支持向量1854支持向量分类机186541可分支持向量分类机…16542支持向量分米机55-支持向量分类机(-SVC)5【-线性支持向量分类机的原始最优化间题552v线性支持向量分类机的对偶问题及其与原始向题的关系553-支持向量分类机然挖554-支持向量分类机的性质指56-支持向量分类机(v-sV)和-支持向量分类机(C-SVC)的关系206561主要结论2郑6562丰要结论的证明57多类分类问题21457.1类对余类215572成对分类2]7573纠错输出编码方法2]8574确定名类目标函数方法218个何子59注记221目录参考文献P「q「第6章回归佔计61回归问题■■■224611可归叵题的难点61.2回归间题的数学提法■1L■…….2266上3不敏感掘失函数22562E-支持向量回归机…….…::,·226.2硬∈带支持向量回机228622从线性6-支持向最回归机到E·支持向量回归机2:363·支持向量回归机··24563L原始最优化问题……·245632对個问题及其与原始问题的关系…,·2486.33-支持向量国归机252634-支持向量回归机的性质25生64E-支持向量回归机(esVR)与p支持向量回妇机{u-SvR的关系641主要结论啁E562主要结论的证明…,2565其他形式的支持向量回归机259G1支持向最回归机的线性规划形式65.2E-带为任意形状的支持向量回归机26266其他形式的损失函数26467一些例子26867l维回归问趣672二维回归间题27068注记■■■司司■卩4■272参考文献血·“·第7章算法71元约束问题解法…2747⊥1无约束问鹎提法记74712基本无约束问题算法…·277713牛顿条件颓优共把梯度法( Newton-PCG算法)29472内点算法21线性规划的原仿射尺度法722线性规划的原-对偶算法723凸二次规划的仿射灵度法724凸二次规划的原-对偶算法P
- 2021-05-06下载
- 积分:1