-
模电课程设计-万用表 基于Multisim仿真
模电课程设计万用表的整机电路,基于Multisim10仿真。。以测试通过
- 2020-06-25下载
- 积分:1
-
基于stm32的机械臂代码
3个MG995舵机和一个sg90舵机。可通过单片机程序控制(自动动作),可通过手机蓝牙控制(不包含app),可通过手柄控制(这部分代码包含在里面了)。
- 2020-12-12下载
- 积分:1
-
学生管理系统(C#基于winform开发,三层架构)
自己编写的一个C#基于winform开发的学生成绩管理系统,运用严谨的三层架构,相信肯定对您有帮助。
- 2020-06-25下载
- 积分: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
-
vb.net数据曲线显示
vb.net 的一个小程序,以前一个项目上用的.可根据数据显示曲线,鼠标移动显示.
- 2020-12-01下载
- 积分:1
-
matlab实现中值滤波去除脉冲噪声
matlab实现中值滤波去除脉冲噪声,比较简单的中值滤波程序。
- 2020-12-08下载
- 积分:1
-
语义分割源代码
基于keras的语义分割源代码,包括segnet、U-Net、FCN,文件夹中包含训练和测试数据,以及训练好的模型。
- 2021-05-06下载
- 积分:1
-
Java微信支付-微信企业付款到个人
微信支付企业付款到个人,包括付款 以及 查询 参考文章http://blog.csdn.net/fengshizty/article/details/53204566
- 2020-12-06下载
- 积分:1
-
STM32_USB-FS-Device_Lib_V3.0.1
【实例简介】
- 2021-06-11 00:31:32下载
- 积分:1
-
EM算法详细例子及推导
EM算法详细例子及推导数θ),那么对于上面的实验,我们可以计算出他们出现我们观察到的结果即0=(5,9,.8,4,7,20=(B,A,A,B,4)的概率函数P(X=x10),2z)⑨)就叫做θ的似然函数。我们将它对θ求偏导并令偏导数为0,就可以得到如的结果P(X=x0,=20))=(;P(z=A)3(1-P(z=A)2C10(1-64)10A(1-6C104(1-0(1-6B)C106n(1-6我们将这个问题稍微改变一下,我们将我们所观察到的结果修改一…下我们现在只知道每次试验有几次投掷出正面,但是不知道每次试验投掷的是哪个硬币,也就是说我们只知道表中第一列和第三列。这个时候我们就称Z为隐藏变量( Hidden variable),X称为观察变量( Observed variable)。这个时候再来估计参数θ4和θB,就没有那么多数据可供使用了,这个时侯的估计叫做不完整数据的参数估计。如果我们这个时候冇某种方法(比如,正确的猜到每次投掷硬币是A还是B),这样的话我们就可以将这个不完整的数据估计变为完整数据估计当然我们如果没有方法来获得更多的数据的话,那么下面提供了一种在这种不完整数据的情况下来估计参数θ的方法。我们用迭代的方式来进行:(1)我们先赋给θ一个初始值,这个值不管是经验也好猜的也好,反正我们给它一个初始值。在实际使用中往往这个初始值是有其他算法的结果给岀的,当然随机给他分配一个符合定义域的值也可以。这里我们就给定64=0.7,6B=0.4(2)然后我们根据这个来判断或者猜测每次投掷更像是哪枚硬币投掷的结果。比如对于试验1,如果投掷的是Δ,那么出现5个止面的概率为C10×0.75×(1-07)5≈0.1029:;如果投掷的是B,出现5个正面的概率为C105×0.43×(1-0.4)5≈0.2007;基于试验1的试验结果,可以判断这个试验投掷的是使币A的概率为0.10290.10290.2007)-0.389是B的概率为02007(0.1029+0.2007)06611。因此这个结果更可能是投掷B出现的结果(3)假设上一步猜测的结果为B,A,A,B,A,那么恨据这个猜测,可以像完整数据的参数仙计一样(公式2重新计算的值这样一次一次的迭代2-3步骤直到收敛,我们就得到了θ的估计。现在你可能有疑问,这个方法靠谱么?事实证明,它确实是靠谱的。期望最大化算法就是在这个想法上改进的。它在估计每次投掷的硬币的吋候,并不要确定住这次就是硬币A或者B,它计算岀来这次投掷的硬币是A的概率和是B的概率;然后在用这个概率(或者叫做Z的分布)来计算似然函数。期望最大化算法步骤总结如下:F步骤先利用旧的参数值〃计算隐藏变量Z的(条件)分布P(万=2|Xn2),然后计算logP(,X=m)的期望B(o(2,X=x)=∑∑P(Z=别X=)P(Z=X=x)其中θ是当前的值,而θ是上一次迭代得到的值。公式中已经只剩下θ一个变量了,θ是一个确定的值,这个公式或者函数常常叫做Q函数,用Q(6,6)来表示。M步骤极大化Q,往往这一步是求导,得到由旧的θ值′米计算新的θ值的公式aQ总结一下,期望最大化算法就是先根据参数初值估计隐藏变量的分布,然后根据隐藏变量的分布来计算观察变量的似然函数,估计参数的值。前者通常称为E步骤,后者称为M步骤3数学基础首先来明确一下我们的目标:我们的目标是在观察变量X和给定观察样本:1,x2,…,rn的情況下,极大化对数似然函数(=>nP(X2=x;)(5)其中只包含观察变量的概率密度函数P(X2=2)=∑P(X=n,=)这里因为参数θ的写法与条件概率的写法相同,因此将参数θ写到下标以更明确的表述其中Z为隐藏随机变量,{}是Z的所有可能的取值。那么6)=∑h∑P(X=x,z=2)∑h∑。Px=x这里我们引入了一组参数(不要怕多,我们后面会处理掉它的)a,它满足可能的;,0;∈(0,1和∑;a=1到这里,先介绍一个凸函数的性质,或者叫做凸函数的定义。∫(x)为凸函数,=1,2,…,m,A∈[0,1∑1A对∫(x)定义域中的任意n个m1,x2,…,xn有f(∑Aa)≤∑mf(xr)i=1对于严格凸函数,上面的等号只有在x1=2xn的时候成立。关于凸函数的其他性质不再赘述。对数函数是一个严格凸数。因而我们可以有下面这个结果0)=∑hn∑≥∑∑ah(X=2n,2=C现在我们根据等号成立的条件来确定a;即P(X=x,Z=2)C(10)其中c是一个与j无关的常数。因为∑,=1,稍作变换就可以得到P(X;=x;)现在来解释下我们得到了什么。c;就是Z=2;在X=x;下的条件概率戌者后验概率。求α就是求隐藏随机变量Z的条件分布。总结一下目前得到的公式就是)-∑∑P(Xi=i,Z(12)直接就极大值比较难求,EM算法就是按照下面这个过程来的。它就是大名鼎鼎的琴生( Jensen)不等式(1)根据上一步的θ来计算α,即隐藏变量的条件分布(2)极大化似然函数来得到当前的的估计3.1极大似然估计好吧,我觉得还是再说说极大似然估计吧。给定一个概率分布D,假设其概率密度函数为f,其中f带有一组参数6。为了估计这组参数6,我们可以从这个分布中抽出一个具有n个采样值的X1,X2,…,Yn,那么这个就是n个(假设独立)同分布随机变量,他们分别有取值x1,x2…,xn,那么我们就可以计算出出现这样一组观察值的概率密度为lI f(ai)(13)对于f是离散的情况,就计算出现这组观察值的概率10)注意,这个函数中是含有参数0的。0的极大似然估计就是求让上面似然函数取极大值的时候的参数O值。般来说,会将上面那个似然函数取自然对数,这样往往可以简化计算。记住,这样仅仅是为了简化计算。取了自然对数之后的函数叫做对数似然函数。ln()=∑lnf(n)因为对数是一个严格单调递增的凹函数,所以对似然函数取极人值与对对数似然函数取极大值是等价的。3取了对数之后还可以跟信息熵等概念联系起来4关于凸函数有很多种说法,上凸函数和下凸函数,凸函数和凹函数等等,这里指的是二阶导数大」(等」)0的一类函数,而凹函数是其相反数为凸数的一类函数32期望最大化算法收敛性如何保证算法收敛呢?我们只用证明l(04+1)≥1(00)就可以了l(0(t11)∑∑(+1)1PX=x;2=2)(+(t+1∑∑nf(X=x;,z=z;)(+1)(t)o(tn /(r=i,Z=2(t)≥∑∑ahn(t)7(0其中第一个人于等于号是因为只有当a取值合适(琴生不等式等号成立条件)的时候才有等号成立,第二个人于等于号正是M步骤的操作所致。这样我们就知道l(θ)是随着迭代次数的增加越来越人的,收敛条件是值不再变化或者变化幅度很小。4应用举例4.1参数估计很直接的应用就是参数估计,上面举的例子就是参数估计42聚类但是如果估计的参数可以表明类别的话,比如某个参数表示某个样本是否属于某个集合。这样的话其实聚类问题也就可以归结为参数估计问题。References[]最大似然估计[oNline].Availablehttp://zh.wikipediaorg/wiki.%E6%9c%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1[2] Ceppellini, r, Siniscalco, M.& Smith, C.A. Ann. Hum. Genet. 20, 97-115(1955)3 Hartley, H. Biometrics 14, 174-194(1958)4 Baum, L.E., Petric, T, Soulcs, G.& Weiss, N. Ann. Math. Stat 41, 164-171(1970)[ 5] Dempster, A P, Laird, N.M., Rubin, D B.(1977). "Maximum Likelihoodfrom Incomplete Data via the em algorithm. Journal of the royal statis-tical Society Series B(Methodological)39(1): 1-38. JSTOR 2984875 MR0501537[6]Whatistheexpectationmaximizationalgorithm[oNline].Avaiable:http//ai. stanford. edu/-chuongdo/papers/em tutorial pdf[7TheEmAlgorithmOnline.Availablehttp://www.cnblogs.com,jerrylead/ archive/2011/04/06/2006936html
- 2020-12-07下载
- 积分:1