基于MATLAB的指纹识别系统设计
基于MATLAB的指纹识别系统设计论文,具有一定参考价值,对毕业设计有用。基于 MATLAB的指纹识别系统设计AbstractBiometric technology has become one of the developing technologies for identityrecognition and network security. And fingerprint identification technology is now recognizedas one of the most safe. accurate and convenient authentication technologies and it is a focusfor researchersThis paper designs a matlab-based fingerprint recognition system. The first introducesthe fingerprint recognition technology research background, significance, and the status quoSecondly, to achieve fingerprint identification system, describes the basic structure of thefingerprint identification system, and the fingerprint image preprocessing, feature extractionfeature matching these three essential aspects of the algorithm is studied in detail in thefingerprint image pre-processing stage this article uses an algorithm based on gray imagesegmentation carried out at the same time, for the image after binarization noise still existsbut also for the corresponding trimming process, as much as possible for the future lay thefoundation for fingerprint feature extraction and thus successfully achieved fingerprint digitalimage processing, Teature extraction, slorage and matching functions. Finally, Che fingerprintidentification system for simulation, simulation results show that the system can identify abetter accuracy rate reached 95.1%Key Words: Fingerprint Recognition; Processing; Binarization; Feature Extraction;Feature Matching基于 MATLAB的指纹识别系统设计目录摘要······*······················-·······“······“···+····“····“““··“···············*·····““·········Abstract1绪论1.1本课题背景和意义1.2指纹识别技术研究现状1.3本文的章节安排中中中·中中和中。中申中申中中中非和申中日…22指纹识系统设计42.1指纹识别系统设计基本结构.42.2指纹图像分割…2.2.1指纹图像分割介绍2.2.2均值方差法2.3指纹图像的细化…2.3.1指纹图像细化的预处理2.3.2指纹图像细化方法计算72.4指纹图像的特征提取…2.4.1指纹特征提取概述着非非非道非非非非自非非非非日非着非非非非非非2.4.2指纹特征提取和去伪特征2.5指纹图像匹配方法……102.5.1指纹图像匹配介绍…26本章小结3仿真结果及其分析3.1仿真结果及分析…123.2本章小结…,14结论参考文献.17附录 MATLAB程序m重自18致谢“···*:····35IlI基于 MATLAB的指纹识别系统设计1绪论1.1本课题背景和意义指纹识別技术的应用十分广泛,指纹因具有终生不变性及稳定性,而且不同人指纹相同的概率儿乎为零,因此指纹自动识别系统被广泛应用于案例分析、商业活动中的身份鉴别等领域.目前有很多的生物测定技术可用于身份认证,包括虹膜识别技术、视网膜识别技术、面部识別、签名识别、声音识别技术、指纹识別等,具有安全、可靠的特点,其中自动指纹识别系统是目前研究最多、最有应用前景的生物识别系统。指纹识别技术的发展得益于现代电子集成制造技术的进步和快速可靠的算法的研究。指纹门禁系统通过将用户的指纹特征与指纹特征数据库屮的数据进行对比实现用户身份的鉴别,并不直接保存和使用用户的指纹图像信息,不会侵犯到用户的隐私信息,是当前技术最先进、应用最广泛的门禁系统。对生物识别(指纹识别)技术来说,被广泛应用意味着它能在影响亿万人的日常生活的各个地方使用。通过取代个人识别码和口令,生物识别(指纹识别)技术可以阻止非授权的“访问”;可以防止盗用ATM、蜂窝电话、智能卡、桌面PC、工作站及其计算机网终;在通过电话、网络进行的金融交易时进行身份认证;在建筑物或工作场所生物识别技术(指纹识别)可以取代钥匙、证件、图章等。生物识别(指纹识别)技术的飞速发展及其广泛应用将开创个人身份鉴别的新时代。指纹所具有的唯一性、不变性、及易于获取、分类存储有规律等特性使其成为生物鉴定学中最为成熟的方式。1.2指纹识别技术研究现状指纹识别技术从早期的人工比对到现在采用计算机技术实现自动指纹识别,指纹对比更加准确,识别效率得到极大提高。自动指纹识别过稈通常由指纹图像滤波增强、二值化、细化、征提取以及指纹匹配等几个环节构成。指纹图像滤波增强的目的是将有噪声干扰的指纹图像变得更加清晰,使得指纹图像的脊线更黑,谷线更白,当前在实际指纹图像増强算法的应用中一般是几种滤波增强方式结合起来使用,主要的方案是基于傅里叶变换结合滤波和指纹图像点方向场的下上下滤波器;指纹图像二值化,是将指纹图像变成灰度值只有0和255两种颜色的图像,当前,在自动指纹识别中棠用的是根据指纹图像的点方向场在指纹纹线方向和指纹纹线垂直方向上对指纹图像进行一值化处理;指纹图傻细化是指删除指纹纹线的边缘像素,使之只有一个像素宽度,目前在自动指纹识别技术中常用的是OPIA算法的改进的图像模板细化算法;指纹特征提取,是将细化后使用计算教字图像处理技术采集指纹图像中奇异点、端点、叉点等指纹特征基于 MATLAB的指纹识别系统设计数据,目前常用的特征提取算法是先对细化后的指纹图像进行初步去噪,然后提取特征点,再根据阈偵去除伪特征点:指纹匹配,是指纹预留模板图像与输入样板图像中的所有特征点的匹配,目前在自动指纹识别系统中常采用可变大小的界限盒的指纹特征匹配算法。目前指纹识别技术还有诸多困难,例当三维的指纹被指纹录入设备扫描成二维的数字图像时,就会丢失一部分信息,手指划破、割伤、弄脏、不同干湿程度以及不同的按压方式,还会导致指纹图像的变化,这就给可靠的特征提取带来了困难;例如传统的基于细节点的识别方法,是依靠提取指纹脊线上的细节点,然后对其位置和类型进行匹配,来识别指纹的,而噪声会影响特征提取准确度,增加错误的特征点或丢失真正的特征点。当噪声很大时,就要增加图像增强算法来改善图像的质量,但很难找到一种增强算法能够适应所用的噪声,多种増强算法又会人嗝増加算法运行时间,不好的増强算法又会增加人为特征。当喉声增大时,提取了许多虚假细节点,还有可能丢失细节点,这就是传统的基于细节点识别算法的不足之处之一,因为它只利用了指纹图像中的一小部分信息(细节点位置和方向)作为特征进行匹配,丢失了蕴涵在图像中的其他丰富的结构信息。不难想象,基于这种方法的识别算法,很难个面适应指纹的变化。人的指纹含有天然的密码信息,它们具有几点重要特特点①广泛性,指每一个正常的人都有指纹。②唯一性,指每一个人的指纹都不同。指纹的纽节由细微纹点和纹线的起点、终点、分叉等组成。止是这些无穷无尽的细节特征组合构成了指纹的唯一性,事实上,甚至包括双胞胎,世界上两个指纹相同的概率小于1/109,几乎为零,这就构成了指纹的第大特点。③终生不变性,指纹终身不变即指纹的图案永远不会改变,从人的出现到死后的分解为止(除非指纹受到伤害)。④指纹与主体的不可分离性:即指纹不存在丢失、遗忘、被窃取的可能。指纹的使用比起其它证卡来说更快捷、安全、准确、无干扰,可实现快速登录注册,系统兼容性好,也就是说可以独立或者通讨联网构成系统并H很容易并入各类证卡和定义识别系统中。因此,指纹识别技术的应用范围极广。1.3本文的章节安排本文以研究指纹识别中指纹图像分割、细化、特征提取、匹配等若十问题为研究主体,针对指纹识别技术中分割、细化和匹配进行了仿真和修正。其中分割部分采用了方基于 MATLAB的指纹识别系统设计差均值的方法,细化选取了一种伪特征较少的模板,匹配时以分叉点和端点信息进行匹配。具体的章节和各章的内容安排如下:第一章:在介绍本论文的研究背景及意义,在指纹识别技术的现状和特点的基础上,确定了本文所做的主要工作。第二章:本章主要介绍了指纹识别系统设计原理,为后续的研究工作奠定基础,介绍了均值方差的基础知识和基本理论以及仿真中具体的分割运用算法;指纹图像细化的方法;指纹图像细化后的特征提取,需要哪些特征,去除哪些伪特征,以方便和正确地进行匹配工作:指纹图像配的概念、匹配问题的困难所在和常用方法。第三章:指纹识别系统的仿真结果及分析。结论:总结本文所取得的一些研究成果,并对课题发展进行了展望。基于 MATLAB的指纹识别系统设计2指纹识系统设计2.1指纹识别系统设计基本结构指纹识別系统主要由指纹图像读取,图像预处理,特征提取,特征匹配四大步骤组成首先,我们要提取需要处理的指纹识别的原始图片。其次,进行图像预处理。通常图像预处理包括分割、归一化、二值化和细化,图像预处理的目的貮是去除图像中的噪声,将图像变成清晰点线图,这样才能提取到正确的指纹特征,从而达到止确匹配的目的。它的好坏直接影响到指纹识别的效果。在此基础上,接下来就是要对细化后的数字图像进行关键特征提取,从而达到识别不同的志文数字图像的目的。普遍采用的特征提取是提取细节点。最后,我们将处理后的图像进行匹配,指纹图像的特征匹配主要是对所提取的细节持征进行匹配,将要比对的图像与库中图像的细节特征进行比对,并将比对结果输出,这是指纹识别系统设计中最重要的一个环节,这也是指纹识别系的最终目的。2.2指纹图像分割2.2.1指纹图像分割介绍指纹图像分割在指纹识别系统中作为图像与处理的一部分,指纹图像分割的基本依据是图像的某些特征及特征的集合。如灰度值,邻域关系,纹线的扭曲程度等。图像特征是指纹图像的怗有属性。通过提取图像特征,可将原始图像映射到特征空间,使图像特征在特征空间中呈现一定的分布。因此根据以上的的灰度值领域关系,纹线的扭曲程度,指纹图像分割大致分为三类:基于像素的图像分割,基于块特征的图像分割以及基于全局的图像分割。基于像素的指纹图像分割中目前流行多尺度小波变换和阙值法。小波变换和傅里叶变换的出发点都是将信号表示成基函数的线性组合。所不同的是傅里叶变换采用时间属于(一∞,+∞)的谐波函数exP@x作为基函数,计算机中的图像信息是以离散信号形式存放的,在信号处理中,特别是在数字信号处理和数值计算等方面,为了计算机实现的方便,连续小波必须进行离散化,而最基本的离散化方法就是二进制离散,一般将这种经过离散化的小波及其变换叫做二进小波和进变换。基于 MATLAB的指纹识别系统设计小波变换的特点是压缩比高,压缩速度快,压缩后能俣持信号与图象的特征不变,且在传递中可以抗干扰。在指纹识别识别中使用小波变换有助于噪卢的滤除以及有利于检测奇异点。但是小波变換的明显缺点是它计算复杂,计算效果也取决于函数的选择。另一种阙值分割就是简单地用一个或几个阈值将图像的灰度直方图分成几个类,认为图像中灰度在同一个灰度类内的像素属同一物体。它是图像分割中最基本的方法。其原理是先定一个阈值,大于此值为1,小于则认为为0;多阀值则可以利用多维函数。此原理在匹配中也可以运用。其优点是计算简单,仅需比较灰度值即可;运算效率较高,速度快:它的缺陷在于仅考虑图像的灰度信息,而忽略了图像的空间信息,对于图像中不存在明显灰度差异或各物体的灰度值范围有较大票叠的图像分割问题难以得到准确的结果代表块特征的指纹图像分割日前研究趋势为多种块基本特征如灰度均值、块灰度方差、块方向图等综合运用和重新定义块特征。其中块指的是将图像分个成一个个小的图像块。图像均值就是对每个单位块的灰度值取均值,方差则反映该块中各点与均值的偏差性,方向这可以很好的反映纹理的变化趋势。一般来说,常见的方向场的计算分为掩模法和公式法两大类。 LinHong等人开发的基于最小均方估计算法,即公式法。(j)=G(-1,j-1)+2G(-1)+G(+1j-1)-G(-1,+1)-2G(1,j+1)-G(i+1,+1)(j)=G(-1,j-1)+2G(+1)+G(-1,+1)-G(i+1,-1)-2G(i+1,j)-G(i+1,j+1Rx(∴j)(,(a,v)(,y)2-a(x,y)2它是利用正交坐标系下,原点到它们组成的坐标点的有向线段与X的正半轴的夹角可来表示该子块的块方向。这种方法最人的优点是易实现,很好体现出纹理,但缺点是对于变化太快的部分出错。此方法的实现是利用方向滤波器。基于全局的图像分割则是根据情況特别是某些特殊场合的利用,如残缺指纹。全局的图像分割可以是人工选定几个特定点后再根据全局的特点来处理,此法也可运用于匹配。基于全局的指纹识别仍处于实验室探索阶段,应用领域中尚不广泛。2.2.2均值方差法在图像分割概述中,凵经提到基于块特征的指纹图像分割。在这部分将重点介绍均值法差法的计算方法和在仿真中的运用基于 MATLAB的指纹识别系统设计该算法基于背景区灰度方差小,而指纹区方差大的思想,将指纹图像分成块,计算每一块的方差,如果该块的方差小于阈值为背景,否则为前景。具体步骤分以下三步(1)将低频图分成MXM大小的无重叠方块,方块的大小以一谷一脊为宜。(2)计算出每一块的均值和方差。H-1L-AVe=B2∑(.R=_1台台2>>(,)-4VE)(3)如果计算得到的方差几乎接近于0就认为是背景,对于方差不为零的区域在进行阈值分割算法,这种算法主要是根据计算得到的方差来决定其是否为背景区在使用方差均值法之前还要使用归一法将图变为低频图。归一化的目的是把不同原图像的对比度和灰度调整到一个固定的级别上,为后续处理提供一个较为统一的图像规格。指纹图像的归‘化公式如式所示。其中AVE0和ⅤAR为期望的灰度均值和方差。但是小波变换的明显缺点是它计算复杂,计算效果也取决于函数的选择。Rol/(x, ?)-AVENAV点o+lvARo(/(x, -AVEY(3.3)AVEoVAR在使用方差均值法之前还要使用归一法将图变为低频图。归一化的目的是把不同原图像的对比度和灰度调整到一个固定的级别上,为后续处理提供一个较为统一的图像规格。2.3指纹图像的细化2.3.1指纹图像细化的预处理这部分预处理主要为_二值化。由于指纹图像脊、谷相间,因此指纹图像的处理常是将指纹图像一值化。灰度图像一值化是将灰度图变换为只有黑和白两种灰度的图像。这样不仅可以压缩原指纹图像的数据量,而且也方便后面的细节特征的提取。灰度图二值化的基本思想是选取适当的灰度阂值,将灰度图像转化为_值图像,阈值的选择是关键,对于阈值的选择,有多和方法,如熵法,stu法等。根据是否将图像分块处理,又分全
- 2020-12-02下载
- 积分: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