




免费预览已结束,剩余105页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章系统时钟与定时器,2,在前面的几章中,当程序需要延时的时候,我们基本上都是利用循环语句来实现的,这种方法的延时虽然简单,但是不是很精确,也就是说不能得到确切的一段时间的延时。在嵌入式系统中有很多情况都是需要精确的延时的,而想通过精确延时来实现的一些操作一般不会通过循环语句来实现了,一般是利用定时器来实现。S5PV210的时钟体系。实时时钟RTC和控制器。PWM定时器。WATCHDOG定时器。定时器的使用实例。,本章内容:,10.1S5PV210的时钟体系,10.1.1系统时钟概述一般来说,MCU的主时钟源主要是外部晶振或外部时钟,而用得最多的是外部晶振。在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的,由于外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL进行倍频处理。S5pV210包括三个时钟域,即主要系统MSYS、显示系统DSYS和外围系统PSYS。,MSYS域包括Cortex-A8处理器、DRAM内存控制器、3D、内部存储器、芯片配置界面。Cortex-A8只支持同步模式,因此它必须与200MHZAXI总线同步操作。DSYS域包含显示相关模块,包括FIMD、FIMC、JPEG、IPS多媒体。PSYS域用于安全子系统、I/O外设和低功耗音频播放。每个总线系统操作在200MHZ、166HZ和133HZ,分别有异步总线桥梁在两个不同的领域。,S5PV210时钟域,10.1.2时钟声明,下图显示了S5PV210是时钟的分类,S5PV210顶层时钟包括:时钟引脚,即XRTCXTI、XXTI、XUSBXTI、XHDMIXTI。时钟管理单元(如ARMCLK、HCLK、PCLK等)。USBPHY时钟。GPIO引脚时钟。,1.时钟引脚(1)XRTCXTI:指定一个由32.768kHz晶振提供的时钟连接到XRTCXTI和XRTCXTO引脚。RTC使用这个作为时钟源来提供实时时钟。(2)XXTI:指定一个由晶振提供的时钟连接到XXTI和XXTO引脚。当USBPHY没有做有价值设置时,CMU和PLL使用这个时钟生成其他的时钟模块。它输入频率的范围为12-50MHz,推荐使用24MHz晶振,因为iROM设计时基于24MHz输入时钟的。(3)XUSBXTI:指定一个由晶振提供的时钟连接到XUSBXTI和XUSBXTO引脚。这个时钟是提供给APLL、MPLL、VPLL、ELL和USBPHY。推荐使用24MHZ晶振,因为iROM设计时基于24MHZ输入时钟的。(4)XHDMIXTI:指定一个由27MHZ晶振提供的时钟连接到XHDMIXTI和XHDMIXTO引脚。,2.时钟管理单元CMU使用时钟引脚生成内部时钟频率,四个锁相环,USBPHY和HDMIPHY时钟。这些时钟可以选择,并提供扩展相应的模块。推荐使用24MHZ时钟频率作为APLL、MPLL、EPLL和VPLL的输入。以下部分生成内部时钟:APLL使用FINPLL作为输入源来生成30MHZ-1GHZ。MPLL使用FINPLL作为输入源来生成50MHZ-2GHZ。使用FINPLLEPLL作为输入源来生成10-600MHZ。VPLL使用FINPLL或SCLK_HDMI27M作为输入源来生成10-600MHZ。这个锁相环产生54MHZ视频时钟。USBOTGPHY使用XUSBXTI产生30MHZ和48MHZ。使用XUSBXTI或XHDMIXTIHDMIPHY生成54MHZ。,3.时钟关系时钟有以下关系。(1)MSYS时钟域:频率(ARMCLK)=频率(MOUT_MSYS)/nn=1-8频率(HCLK_MSYS)=频率(ARMCLK)/nn=1-8频率(PCLK_MSYS)=频率(HCLK_MSYS)/nn=1-8频率(HCLK_IDEM)=频率(HCLK_MSYS)/2,(2)DSYS时钟域:频率(HCLK_DSYS)=频率(MOUT_DSYS)/nn=1-16频率(PCLK_DSYS)=频率(HCLK_DSYS)/nn=1-8(3)PSYS时钟域:频率(HCLK_PSYS)=频率(MOUT_PSYS)/nn=1-16频率(PCLK_PSYS)=频率(HCLK_PSYS)/nn=1-8频率(SCLK_ONENAND)=频率(HCLK_PSYS)/nn=1-8,(4)推荐的高性能操作频率值:频率(ARMCLK)=1000MHZ频率(HCLK_MSYS)=200MHZ频率(HCLK_IMEM)=100MHZ频率(PCLK_MSYS)=100MHZ频率(HCLK_MSYS)=166MHZ频率(PCLK_DSYS)=83MHZ频率(HCLK_PSYS)=133MHZ频率(PCLK_PSYS)=66MHZ频率(SCLK_ONENAND)=133MHZ166MHZ,(5)锁相环(PLL):APLL可以驱动MSYS和DSYS域,它可以产生1GHZ的时钟和49:51的占空比。MPLL可以驱动MSYS和DSYS域,它可以产生2GHZ的时钟和40:60的占空比。EPLL主要用于生成音频时钟。VPLL主要用于生成视频系统操作时钟,54MHZ。通常APP驱动MSYS域、MPLL驱动DSYS域。,10.1.3时钟的产生,下图显示了框图的时钟生成逻辑。一个外部晶体时钟连接到振荡放大器,S5PV210把锁相环输入低频率时钟转换成高频时钟,时钟发生器还包括一个内置的逻辑电路来稳定每个系统复位后的时钟频率。同时图中显示了两种类型的时钟多路复用。灰色代表无干扰时钟多路复用器,如果时钟出现干扰不改时钟源,白色代表非无干扰时钟多路复用器,当受到干扰可以改变时钟源,使用每个多路复用时钟必须注意。对于无干扰时钟多路复用器,当时钟从其中一个改变到另一个,它应该保证这两个时钟源都在运行;否则,时钟将不完全改变并且会产生未知状态的时钟输出。对于非无干扰时钟多路复用器,当时钟选择改变,它可能出现干扰。,10.1.4每个子块最大工作频率,每个子块最大工作频率如图所示:,10.1.5时钟配置过程,更改时钟配置要遵循以下规则:所有输入的无干扰时钟多路复用器必须运行。当锁相环不工作时,不能选择锁相环的输出。基本的特殊功能寄存器配置流程如下:(1)打开一个锁相环。一旦打开任何锁相环,不要关掉。(A,M,E,V)PLL_CON31=1;/打开一个锁相环Wait_lock_time;/等到锁相环锁定(A,M,E,V)PLL_SEL=1;/在锁相环输出时钟稳定后,选择锁相环输出时钟代替输入参考时钟。,(2)改变锁相环的PMS值。SetPMSvalues;/设置PDIV、MDIV和SDIV值(3)改变系统时钟的分频器值。CLK_DIV031:0=targetvalue0;(4)改变特殊时钟的分配器值。CLK_DIV131:0=targetvalue1;CLK_DIV231:0=targetvalue2;,10.1.6系统时钟相关寄存器,1.锁定时间计数寄存器当输入频率变化或分频值改变时锁相环需要锁定。锁相环锁寄存器指定这个锁定期间,这是基于PLL时钟的来源。在此期间,输出将低状态。寄存器的定义和配置描述如下:,2.锁相环控制寄存器(1)APLLCON0寄存器。该寄存器设置MDIV、PDIV、SDIV三个参数的值。这样设置是因为系统的运行频率将由这三个参数组成的公式决定:,(2)MPLLCON寄存器。MPLLCON寄存器设置MDIV、PDIV、SDIV三个参数的值。这样设置是因为系统的运行频率将由这三个参数组成的公式决定。公式如下:,寄存器配置描述如表所示:,(3)EPLLCON0寄存器。EPLLCON0寄存器设置MDIV、PDIV、SDIV三个参数的值。这样设置时因为系统的运行频率将由这三个参数组成的公式决定:,寄存器配置描述如下:,(4)VPLL_CON寄存器。VPLL_CON寄存器设置MDIV、PDIV、SDIV三个参数的值。这样设置时因为系统的运行频率将由这三个参数组成的公式决定。公式如下:,寄存器的配置描述如表所示:,3.时钟源控制寄存器S5PV210有许多时钟的来源,包括四个锁相环输出、外部振荡器,外部时钟和从GPIO获得的其他时钟源,CLK_SRCn寄存器控制源时钟的每个时钟分频器。时钟源控制寄存器定义如表所示:,4.时钟分频控制寄存器S5PV210有8个时钟分频控制寄存器,分别用来获得不同操作下的时钟频率,分别为CLK_DIVn,n=0,7,如表所示。SCLKAPLL、SCLKMPLL、SCLKA2M、HCLK_MSYS和PCLK_MSYS分别得最大操作频率为1GHZ、667MHZ、400MHZ、200MHZ和100MHZ。这些操作时钟分别由CLK_DIVX配置。,时钟分频控制寄存器定义:,5.时钟选通控制寄存器有两种类型的时钟选通控制寄存器位禁用/启用操作,即块时钟选通控制寄存器。IP时钟选通寄存器。上面的两个寄存器的值是一起来生成一个最终时钟选通启动信号。因此,这两个寄存器如果任何一方是关闭的,则时钟停止。,10.2实时时钟RTC,10.2.1实时时钟描述实时时钟RTC单元在系统电源关闭的情况下可以在备用电池下工作,RTC可以使用STRB/LDRBARM操作传输二进制码十进制数的8位数据给CPU,数据包括秒、分钟、小时、日期、天、月、年的时间信息。RTC单元可以在32.768KHZ的外部晶振下工作,可以执行报警功能。RTC时钟具有以下特点:BCD数:秒、分钟、小时、日期、天、月、年。闰年生成器。报警功能。滴答计时功能。独立电源引脚。支持对于实时内核时间节拍的毫秒节拍时间中断。,10.2.2实时时钟操作,闰年发生器可以基于BCDDATE、BCDMON、BCDYEAR的数据,从28、29、30、31中确定每个月的最后一天。为了写RTC模块中的BCD寄存器,RTCCON寄存器的位0必须置1.为了显示秒、分、小时、日期、天、月、年,CPU应该分别读取在RTC模块中的BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR。RTC逻辑可以由备用电池驱动,其通过RCTVDD引脚给RTC模块提供电源,即使系统电源关闭。当系统关闭时,CPU和RTC模块的接口时封闭的,备用电池仅驱动振荡电路和BCD计数器以最小化电源消耗。,RTC在掉电模式或正常操作模式下的特定时间会发出报警信号。在正常模式下报警中断被激活。在掉电模式下,电源管理唤醒信号也如INT_RTC一样被激活。RTC报警寄存器决定了报警的使能状态和报警时间设定的条件。RTC节拍时间是用于中断请求。TICNT寄存器有一个中断使能位和对于中断计数器值。当节拍时间中断出现时,计数器的值为0.中断中期为Period=(n+1)/节拍时钟源频率second其中,n表示节拍计数器值,范围为1-127,10.3PWM定时器,10.3.1PWM定时器概述S5PV210有5个32位的脉冲宽度调制计时器,这些定时器为ARM子系统产生内部中断。此外,定时器0、1、2和3包括PWM功能,驱动外部I/O接口。PWM定时器0有一个可选的死区发生器功能来支持大电流设备。计数器4是内部定时器没有输出查看。计时器使用APB-PCLK作为源时钟,定时器0和1共享一个可编程的8位预定标器。定时器2、3、4共享另一个8位预分频器。每个定时器有一个时钟分频器。另外,计时器还可以从CMU选择一个时钟源。,每个定时器有一个自己的、由定时器时钟驱动的32位递减计数器。当递减计数器为零时,定时器中断请求生成通知CPU定时器操作已经完成。当定时器计数达到0,相应的TCNTBn的值也知道装载到递减计数值中以继续下一个操作。但是如果定时器停止了,例如在定时器运行模式下通过对TCONn的定时器使能位清零,则TCNTBn的值不会装载到计数器中。TCMPBn的值用于脉宽调制。当递减计数器的值和定时器控制逻辑中的比较寄存器的值匹配时,定时器控制逻辑改变输出电平。因此,比较寄存器决定了PWM输出的开启时间。TCNTBn和TCMPBn寄存器是双缓存的,允许定时器参数更新在中间的任一个周期。新值不生效,直到当前的定时器周期完成为止。,S5PV210的PWM定时器具有如下特性:5个32位定时器。2个8位预分频器和5个时钟分频器多路复用。独立的可编程时钟选择通道。4个独立通道的PWM控制与可编程任务。静态配置时,PWM是停止的。动态配置时,PWM是运行的。自动重载模式或单脉冲模式。1个外部启动PWM.1个死区生成器,2个具有死区空间的输出接口。可产生中断。,10.3.2PWM定时器操作,PWM定时器系统框图,定时器(除定时器通道5)有TCNTBnTCNTnTCMPBnTCMPn。当定时器为0,TCNTBn和TCMPBn可以被装载到TCNTn和TCMPn中。当TCNTn为0,如果中断使能则一个中断请求将出现。S5PV210的PWM定时器有一个双缓冲功能,在不停止当前定时器操作的情况下对于下一个定时器操作使能重载值改变,所以尽管一个新定时器值被设置,当前定时器操作还能成功完成。定时器值可以写到定时器计数缓存寄存器TCNTBn,定时器的当前计数器值可以从定时器计数观察寄存器TCNTn中读取。,如果TCNTBn被读取,读取值不指示计数器的当前状态而是下一个定时器期间的重载值。当TCNTn为0,自动重载操作复制TCNTBn到TCNTn.仅当TCNTn到达0且自动重载使能,写入TCNTBn的值被装载到TCNTn中。如果TCNTn变成0且自动重载位为0,TCNTn不在进一步操作。,定时器操作时序图:,双缓冲函数实例如图所示:,当递减计数器为0时将出现定时器自动重载操作,因此TCNTn的初始值必须由用户预选定义,在这种情况下,初始值必须由手动更新位来装载。以下步骤描述了如何开始一个定时器。(1)写初始值到TCNTBn和TCMPBn。(2)设置相应定时器的手动更新位,推荐配置反相器开关。,以下过程的结果如图所示:,(1)使能自动重载功能。(2)设置开始位,手动更新位为0,反相器关闭且自动重载开启,在等待时间后定时器开始倒计数。(3)当TCNTn的值和TCMPn的值相同,TOUTn的逻辑电平从低变为高。(4)当TCNTn为0,中的请求生成且TCNTBn的值装载到一个临时寄存器中。在下一个定时器周期,TCNTn会用该临时寄存器的值重载。(5)在中断服务程序中,TCNTBn和TCMPBn为下个周期被分别设置为80和60.(6)当TCNTn的值和TCMPn的值相同,TOUTn的逻辑电平从低变为高。(7)当TCNTn为0,TCNTn和TCNTBn的值自动重载,并触发中断请求。,(8)在中断服务程序中,自动重载和自动请求被设无效以停止定时器。(9)当TCNTn的值和TCMPn的值相同,TOUTn的逻辑电平从低变为高。(10)就算TCNTn为0,因为自动重载被设为无效,TCNTn不再被重载且定时器停止。(11)没有其他的自动请求生成。,通过使用TCMPBn来执行PWM功能。PWM的频率由TCNTBn来决定。如图所示,TCMPBn的值来决定PWM的值。要得到一个更高的PWM值,则要减少TCMPBn的值;要得到一个更低的PWM值,则要增加TCMPBn的值。如果使用了反相器,则增加和减少可以相反。双缓冲功能允许对于下个PWM周期在当前PWM周期任意时间点由ISR或其他程序改写TCMPBn。,PWM调制实例,输出电平控制如图所示。,以下过程描述如何保持TOUT高电平或低电平。(1)关闭中断重载位。然后TOUTn变成高电平,在TCNTn为0后定时器停止。(2)对定时器的开始停止位清零停止定时器。如果TCNTnTCMP你,输出为低电平。(3)TOUTn可以由TCON中的反相器开启关闭位来翻转。反相器删除了用于调节输出电平的附加电路。,死区用于电源设备的PWM控制。下图是死区特性使能情况下的波形图,可以看出,该功能是使能在关闭一个开关设备和开启另一个开关设备之间插入一个时间间隔,该时间间隔禁止两个开关设备同时开启即使是在极短的时间内。TOUT0是PWM输出,nTOUT0是TOUT0的倒置。如果死区使能,TOUT0和TOUT1的输出波形分别是TOUT0_DZ和nTOUT0_DZ。nTOUT0_DZ被发生到TOUT1引脚。在死区间隙,TOUT0_DZ和nTOUT0_DZ不能同时开启。,10.3.3PWM定时器特殊寄存器,PWM定时器特殊寄存器主要有以下4个。定时器配置寄存器TCFGn定时器控制寄存器TCON定时器n计数缓存寄存器TCNTBn,定时器比较缓存寄存器TCMPBn定时器n计数观察寄存器TCNTOn,10.3.3PWM定时器特殊寄存器,10.3.3PWM定时器特殊寄存器,10.3.3PWM定时器特殊寄存器,注意:(1)定时器配置寄存器TCFG0.定时器输出时钟频率=PCLK/prescalervalue+1/dividervalue其中,prescalervalue=1-255;dividervalue=1、2、4、8、16、TCLK。(2)定时器配置寄存器。定时器输出时钟频=PCLK/prescalervalue+1/dividervalue其中,prescalervalue=1-255;dividervalue=1、2、4、8、16、TCLK。,S5PV210共有5个32位的定时器,其中定时器0、1、2、3有PWM功能,即它们都有一个输出引脚,可以通过定时器来控制引脚周期性的高、低电平变化;定时器4没有输出引脚。从PCLK开始需要经过两级分频,第一级分频通过2个8位预分频器分频,第二级分频使用输出分频,最终得到定时器频率。这两次预分频都是通过设置TCFG0寄存器完成的。每个定时器工作在哪种频率下可以通过TCFG1寄存器来选择的,定时器内部控制逻辑的详细原理可参看数据手册。,定时器的使用主要涉及两个寄存器。TCFG0寄存器:位7:0,位15:8分别用于控制预分频器0、1,它们的值为0-255.经过分频器出来的时钟频率,即PCLK/(TCFG07:0+1或TCFG015:8+1)TCFG1寄存器:设定相应定时器为经过分频器出来的时钟频率的几分频。定时器工作频率=PCLK/(TCFG07:0+1或TCFG015:8+1),TCNTBn/TCMPBn寄存器:TCNTBn中保存定时器的初始计数值,TCMPBn中保存比较值。它们的在启动定时器时,被传到定时器内部寄存器TCNTn,TCMPn中。TCNTOn寄存器:n为0-4,内部寄存器TCNTn在其工作时钟下不断减1计数,可以通过读取TCNTOn寄存器得知其值。TCON寄存器:它的功能为第一次启动定时器时,手动将TCNTBn/TCMPBn寄存器的值装入内部寄存器TCNTn,TCMPn中。启动,停止定时器。决定在定时器计数到达0时是否自动装入初值。决定定时器的引脚TOUTn输出电平是否反转。,10.4WATCHDOG定时器,S5pv210看门狗定时器用于当噪声或系统错误引起的故障时恢复控制器操作,作为一个普通的16位时间间隔定时器来请求中断服务。看门狗定时器和PWM定时器的区别就是看门狗定时可以产生复位信号。WATCHDOG定时器有如下特点:有中断请求的普通间隔定时器模式。激活内部复位信号如果定时器计数值到0.支持水平触发中断机制。,看门狗定时器功能模块图,看门狗定时器使用PCLK作为其源时钟。PCLK频率被预分频产生相应的看门狗定时器时钟,得到的频率再次被分配。,预定标器的值和频率除数因子由看门狗定时器控制寄存器来定义,有效的预定标值的范围从0到28-1,频率除数因子可以选择16、32、64或128.可以使用以下公式来计算看门狗定时器的时钟频率和每个定时器时钟周期的持续时间。T_watchdog=1/PCLK/(Prescalervalue+1)/(Division_factor),看门狗定时器特殊寄存器如下:1.看门狗定时器控制寄存器WTCONWTCON寄存器允许用户使能看门狗定时器,选择4个不同的时钟源,使能中断,使能看门狗定时器输出。看门狗定时器用于S5PV210上电后故障复位。2.看门狗定时器数据寄存器WTDATWTDAT寄存器用于确定超时期限,其内容在最初的看门狗定时器操作时不能自动加载到定时器计数器中,但是使用0 x8000将驱使第一次超时。在这种情况下,WTDAT的值江北自动重载如WTCNT中。,3.看门狗定时器计数寄存器WTCNTWTCNT寄存器包含在正常操作期间的看门狗定时器的当前计数值。WTCNT必须在使能之前设定初值。(1)工作原理:PCLK2个8位预分频器。初始计数值写入WTCNTwhile(WTCNT=0)自动重载WTCNT=WTDAT,并可以产生中断信号,可以输出复位信号。WATDOG定时器工作频率=PCLK/(WTCON15:8+1)/几分频,(2)其相关寄存器WTCON:用于设置预分配系数,选择工作频率,决定是否使能中断,是否启用WATDOG功能等。WTDAT:用以决定WATCHDOG定时器的超时周期。WTCNT:在启动WATDOG定时器前,必须往这个寄存器写入初始计数值,启动定时器后,它做减1操作,当计数值达到0时,如果中断被使能的话,就发出中断,如果WATCHDOG功能被使能的话就发出复位信号,装载WTDAT寄存器的值并重新计数。,4.看门狗定时器中断清除寄存器WTCLRINTWTCLRINT寄存器用来清除中断,中断服务程序负责相关的中断服务完成后清楚中断,对次寄存器写入任意值来清楚中断,这个寄存器是不允许读的。,10.5定时器使用实例,实例一:PWM编程控制实验,实验目的是通过按键可以设置PWM输出控制蜂鸣器的频率。实例二:利用看门狗定时器产生中断。,10.5.1PWM编程实例,首先看一下相应的宏定义。在上述的宏定义中主要设置PWM控制蜂鸣器端口GPD0_1控制寄存器、定时器的一些控制寄存器、按键,以及IO接口时钟频率的定义。/系统时钟#defineAPLLCON0*(volatileunsignedint*)0 xE0100100)#defineMPLLCON*(volatileunsignedint*)0 xE0100108)#defineEPLLCON0*(volatileunsignedint*)0 xE0100110)#defineVPLLCON*(volatileunsignedint*)0 xE0100120)#defineCLK_SRC0*(volatileunsignedint*)0 xE0100200)#defineCLK_DIV0*(volatileunsignedint*)0 xE0100300)#defineCLK_DIV1*(volatileunsignedint*)0 xE0100304)#defineCLK_DIV2*(volatileunsignedint*)0 xE0100308)#defineCLK_DIV3*(volatileunsignedint*)0 xE010030C),/PWM定时器#defineTCFG0*(volatileunsignedint*)0 xE2500000)#defineTCFG1*(volatileunsignedint*)0 xE2500004)#defineTCON*(volatileunsignedint*)0 xE2500008)#defineTCNTB1*(volatileunsignedint*)0 xE2500018)#defineTCMPB1*(volatileunsignedint*)0 xE250001C)#defineTCNTO1*(volatileunsignedint*)0 xE2500020)/I/O端口#defineGPD0CON*(volatileunsignedint*)0 xE02000A0)#defineGPD0DAT*(volatileunsignedint*)0 xE02000A4),在程序运行之前首先对系统时钟进行初始化,设置PCLK为66MHZ,具体代码如下:voidclock_init()/*1、设置PLL_LOCK寄存器(这里使用默认值)*/*2、设置PLL_CON寄存器(使用芯片手册推荐的值)*/APLLCON0=(10)|(38)|(12516)|(131);/*FOUTAPLL=1000MHz*/MPLLCON=(10)|(128)|(66716)|(131);/*FOUTMPLL=667MHz*/EPLLCON0=(20)|(38)|(4816)|(131);/*FOUTEPLL=96MHz*/VPLLCON=(30)|(68)|(10816)|(131);/*FOUTVPLL=54MHz*/,/*3、选择PLL为时钟输出*/*MOUT_MSYS=SCLKAPLL=1000MHz*MOUT_DSYS=SCLKMPLL=667MHz*MOUT_PSYS=SCLKMPLL=667MHz*/CLK_SRC0,/*4、设置系统时钟分频值*/*freq(ARMCLK)=MOUT_MSYS/(APLL_RATIO+1)=1000MHz/(0+1)=1000MHz*freq(HCLK_MSYS)=ARMCLK/(HCLK_MSYS_RATIO+1)=1000MHz/(4+1)=200MHz*freq(PCLK_MSYS)=HCLK_MSYS/(PCLK_MSYS_RATIO+1)=200MHz/(1+1)=100MHz*freq(HCLK_DSYS)=MOUT_DSYS/(HCLK_DSYS_RATIO+1)=667/(3+1)=166MHz*freq(PCLK_DSYS)=HCLK_DSYS/(PCLK_DSYS_RATIO+1)=166/(1+1)=83MHz*freq(HCLK_PSYS)=MOUT_PSYS/(HCLK_PSYS_RATIO+1)=667/(4+1)=133MHz*freq(PCLK_PSYS)=HCLK_PSYS/(PCLK_PSYS_RATIO+1)=133/(1+1)=66MHz*/CLK_DIV0=(00)|(48)|(112)|(316)|(120)|(424)|(128);,本程序的主函数main()程序入口,初始化蜂鸣器IO口,初始化PWM和调用函数功能。intmain()#if0/*配置GPD01为输出*/GPD0CON/7:4位为0b0010表示TOUT1功能,/*,*配置定时器输入频率,使用timer1*TimerInputClockFrequency=PCLK/(prescalervalue+1)/dividervalue*=66MHz/(65+1)/8=125000*假设输出频率为n,则*TCNTB1=1125000/n*/TCFG0=65;TCFG1=34;/7:4位为0011,表示1/8分频/*产生1Hz,占空比为50%的输出频率*/TCNTB1=125000/1;/递减缓冲寄存器值为定时器输出频率=125000TCMPB1=TCNTB1/2;/比较缓冲寄存器值为125000/2,控制占空比为50%TCON=(19);/*手动更新on*/TCON=(18)|(111);/*启动定时器/手动更新off/自动重载开启*/while(1);return0;,10.5.2WATCHDOG编程实例,看门狗实质上和其他的定时器功能类似,只是看门狗多了一个时间到就复位的功能,要将WTCON的0设置成0就成了普通的中断,将进入中断处理程序中,如果设置成了1将复位。这样的话,可以使用看门狗来实现对程序的监视,定时地去喂狗也就是定时给WTCNT复位,如果程序跑飞就不能定时去喂狗,系统将重启。,Led测试看门狗程序的代码如下:#defineWTCON(*(volatileunsignedint*)0 xE2700000)#defineWTDAT(*(volatileunsignedint*)0 xE2700004)#defineWTCNT(*(volatileunsignedint*)0 xE2700008)#defineGPC1CON(*(volatileunsignedint*)0 xE0200080)#defineGPC1DAT(*(volatileunsignedint*)0 xE0200084)voidinit_wtdog(void)WTCON=0 x8329;/0 x8329=15:8=131,5=1,4:3=01,0=166M时钟频率下设定看门狗计数频率15625HzWTDAT=20625;/15625+5000;看门狗计数周期WTCNT=20625;GPC1CON=0 x11000;/配置led灯,voidled_off(void)GPC1DAT=0;/LED灯全关voidled_on(void)GPC1DAT=0 x18;/LED灯全开,voiddelay(void)while(1)if(WTCNT5000)/判断看门狗计数器计数15625次,时间为1秒return;,voidmain(void)inti;init_wtdog();while(1)led_off();delay();WTCNT=20625;/为看门狗重新赋计数初值led_on();delay();WTCNT=20625;,编译之后下载到开发板,可以看到程序一直在运行,且LED灯以1s精准间隔闪烁,没有出现重启,则定时器一直在喂狗。,本章小结,本章主要介绍了S5PV210的系统时钟以及定时器的使用,对系统时钟、RTC时钟、PWM定时器、以及WATCHDO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力发展不停步
- 新闻联播中的新质生产力解读
- 新质生产力与新的生产关系
- 情人节的活动策划方案(标准模版)
- 2025年呼吸内科慢性阻塞性肺疾病诊疗方案考核答案及解析
- 2025年心脏病学患者的护理综合测试卷答案及解析
- 2025年呼吸内科重症病例处理演练答案及解析
- 2025年小儿外科手术术前术后护理综合评估试题答案及解析
- 2025年精神科抑郁症患者心理干预策略测试答案及解析
- 新质生产力重点发展领域解析
- 第四讲-正确认识中国经济热点问题-2025秋版本-建设更高水平平安中国国家安全
- 2025北京京剧院招聘工作人员10人笔试备考题库及答案解析
- 配电柜组装基本知识培训课件
- 林业安全知识培训教育课件
- 工商注册知识培训课件
- 隐患排查治理奖励制度
- 学校食堂清洗消毒工作流程培训测试题及答案
- 计算机组装及维护试题库附带答案总结全面
- 武汉公积金基本知识培训课件
- 校园消防安全知识培训主要内容
- 校园垃圾清运应急预案演练(3篇)
评论
0/150
提交评论