文档章节

arm9时钟及定时器

季风_落地窗
 季风_落地窗
发布于 2014/05/13 14:55
字数 601
阅读 307
收藏 2

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

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

MPLL计算方法:

例: 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))

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

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

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

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

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

工作原理:

(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中, 开始新一轮的递减. 

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. 貌似必须先设置"手动跟新" 然后再清除"手动更新"
}

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


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

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

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





© 著作权归作者所有

上一篇: arm9 uart
下一篇: arm9中断结构
季风_落地窗
粉丝 4
博文 16
码字总数 16829
作品 0
杨浦
程序员
私信 提问
关于ARM的22个常用概念下

12.ARM体系结构的存储器格式 答:ARM体系结构的存储器格式有如下两种: 大端格式:字数据的高字节存储在低地址中,字数据的低字节存放在高地址中; 小端格式:与大端存储格式相反,高地址存放...

muliuhai
2017/10/17
147
0
嵌入式定制开发选ARM7还是ARM9

ARM公司设计了许多处理器,它们可以根据使用的不同内核划分到各个系列中。系列划分是基于ARM7、ARM9、ARM10、ARM11和Cortex内核。后缀数字7、9、10和11表示不同的内核设计。数字的升序说明性...

gunser
2018/06/01
0
0
KLite 移植说明 V1.0

KLite 移植说明 V1.0 KLite是一个“简洁易用”的嵌入式操作系统微内核 目前支持Cortex-M0/M3/M4,支持Keil/IAR/gcc 一.普通移植 普通移植是指在KLite已经支持的CPU架构(如Cortex-M0,M3,M4)上进...

kerndev
2016/08/08
124
0
STM32 SysTick定时器

一、说明 SysTick 定时器是实时操作系统专用的,但是也可以作为一个标准的递减计数器使用。它具有以下特点: 1、24位递减计数器(16777216) 2、自动装填能力 3、计数器达到 0 时,有可屏蔽的...

u011303443
2017/03/02
0
0
ARM9 + Linux多线程精确的定时器

最近公司有个项目平台是ARM9 + linux, 在开发过程中遇到一个问题: 有一部分CAN通讯,需要250ms定时发送一帧数据包。于是我用select做了一个定时器发送。但是当这个多线程的程序真正跑起来,...

forlinux
2015/05/16
778
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
18
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部