第十章 系统时钟与定时器_第1页
第十章 系统时钟与定时器_第2页
第十章 系统时钟与定时器_第3页
第十章 系统时钟与定时器_第4页
第十章 系统时钟与定时器_第5页
已阅读5页,还剩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 133MHZ 166MHZ 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 CON 31 1 打开一个锁相环Wait lock time 等到锁相环锁定 A M E V PLL SEL 1 在锁相环输出时钟稳定后 选择锁相环输出时钟代替输入参考时钟 2 改变锁相环的PMS值 SetPMSvalues 设置PDIV MDIV和SDIV值 3 改变系统时钟的分频器值 CLK DIV0 31 0 targetvalue0 4 改变特殊时钟的分配器值 CLK DIV1 31 0 targetvalue1 CLK DIV2 31 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 有TCNTBn TCNTn TCMPBn TCMPn 当定时器为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 TCFG0 7 0 1或TCFG0 15 8 1 TCFG1寄存器 设定相应定时器为经过分频器出来的时钟频率的几分频 定时器工作频率 PCLK TCFG0 7 0 1或TCFG0 15 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到2 8 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 工作原理 PCLK 2个8位预分频器 初始计数值写入WTCNT while WTCNT 0 自动重载WTCNT WTDAT 并可以产生中断信号 可以输出复位信号 WATDOG定时器工作频率 PCLK WTCON 15 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 1 0 3 8 125 16 1 31 FOUTAPLL 1000MHz MPLLCON 1 0 12 8 667 16 1 31 FOUTMPLL 667MHz EPLLCON0 2 0 3 8 48 16 1 31 FOUTEPLL 96MHz VPLLCON 3 0 6 8 108 16 1 31 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 0 0 4 8 1 12 3 16 1 20 4 24 1 28 本程序的主函数main 程序入口 初始化蜂鸣器IO口 初始化PWM和调用函数功能 intmain if0 配置GPD0 1 为输出 GPD0CON 7 4位为0b0010表示TOUT1功能 配置定时器输入频率 使用timer1 TimerInputClockFrequency PCLK prescalervalue 1 dividervalue 66MHz 65 1 8 125000 假设输出频率为n 则 TCNTB1 1125000 n TCFG0 65 TCFG1 3 4 7 4位为0011 表示1 8分频 产生1Hz 占空比为50 的输出频率 TCNTB1 125000 1 递减缓冲寄存器值为定时器输出频率 125000TCMPB1 TCNTB1 2 比较缓冲寄存器值为125000 2 控制占空比为50 TCON 1 9 手动更新on TCON 1 8 1 11 启动定时器 手动更新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 WTCNT 5000 判断看门狗计数器计数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定时器 以及WATCHDOG看门狗定时器做了详细介绍

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论