arm9时钟及定时器怎么实现

发布时间:2021-12-20 10:45:31 作者:iii
来源:亿速云 阅读:120

这篇文章主要讲解了“arm9时钟及定时器怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“arm9时钟及定时器怎么实现”吧!

首先看下各个模块与时钟总线的关系:

arm9时钟及定时器怎么实现

芯片刚开始上电时, 运行的时钟就等于晶振的时钟Fin, 通过设置MPLL和UPLL可以提升运行频率.

arm9时钟及定时器怎么实现

MPLL计算方法:

arm9时钟及定时器怎么实现

例: Fout = (2 * (MDIV + 8) * Fin) / ((PDIV + 2) * (2^SDIV))

Fout = 200MHz = (2 * (92 + 8) * 12) / (1 + 2) * (2^2)

MDIV = 92

PDIV = 1 

SDIV = 2

#define S3C2440_MPLL_200MHZ     ((0x5c << 12) | (0x01 << 4) | (0x02))

也可以使用官方推荐的值:

arm9时钟及定时器怎么实现

CLKDIVN  = 0x03;            // FCLK:HCLK:PCLK=4:2:1, HDIVN=1,PDIVN=1

arm9时钟及定时器怎么实现

另外: LockTime是指配置了MPLL/UPLL之后时钟需要一段时间来稳定下来, 这段时间就是locktime

/*************************************************定时器**********************************************************************/

s3c2440有5个16bit定时器, 其中0~3具有pwm功能(输出), TIM4是无输出引脚的内部定时器,  TIM0还包含死区功能, 以PWM定时器的寄存器说明:

arm9时钟及定时器怎么实现

工作原理:

(1)TCMPBn 和 TCNTBn 分别装入定时器 n 的比较值和初始值

(2)设置 TCON 来启动定时器 n. 这时 TCMPBn / TCNTBn 分别自动装入 TCMPn / TCNTn 中, 然后 TCNTn开始递减

(3)当 TCMPn == TCNTn , TIMn输出引脚的电平翻转

(4)当 TCNTn == 0, TIMn 输出引脚再次翻转, 并且申请中断

(5)当 TCNTn == 0, 且 TCON 配置了定时器为自动重装, 则TCMPBn / TCNTBn 自动装入 TCMPn / TCNTn中, 开始新一轮的递减. 

arm9时钟及定时器怎么实现

TCFG0:  TIMn 的 预分频值

TCFG1: TIMn 的 分频值

例: timer0_clock = 100MHz / (99+1) / 16 = 62500Hz

void TIM0_init(void)
{
    TCFG0 = (99 << 0);  //预分频值 99
    TCFG1 = (16 << 0);  //分频值 16
    TCNTB0 = 31250;     //定时 0.5 s 
    TCON = ~(1 << 1);   //手动更新
    TCON = 0x09         //自动更新, 清"手动更新"标志位, 启动TIM0. 貌似必须先设置"手动跟新" 然后再清除"手动更新"
}

/**************************************看 门 狗**************************************************************/

arm9时钟及定时器怎么实现

(1) 首先是两级分频, 和TIM一样, 看门狗模块分为两个模式, 1. 普通定时器  2. 看门狗. 如果当做普通定时器时则应使能中断且禁止看门狗定时器

(2) 在 WTDAT 中装入初值, 因为一旦使能WTD之后, WTDAT的值不能自动加载到WTCNT中, 所以必须一开始就为  WTCNT 装载初值, 开始递减.减到0的时候

(3)如果WTD作为普通定时器, WTCNT==0时, 产生中断. 如果作为WTD, WTCNT==0时则产生复位信号

感谢各位的阅读,以上就是“arm9时钟及定时器怎么实现”的内容了,经过本文的学习后,相信大家对arm9时钟及定时器怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. JavaScript时钟与定时器
  2. 使用JavaScript怎么实现一个时钟定时器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

arm

上一篇:往Redis里写的数据为什么没了

下一篇:arm9 uart怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》