ARM TIMER 使用 控制 详解
来源:互联网 发布:eclipse 关联源码 编辑:程序博客网 时间:2024/06/05 20:19
转帖网址:http://blog.chinaunix.net/u2/78572/showart_1212304.html
LPS ARM 21XX/22XX 系列得芯片内部都集成了两个时钟 TIMER0, TIMER1
这两个时钟除了外设基地址不同,别得都是相同得 包括控制和使用
作用:
顾名思意 他们得主要作用就是用来计时合计数的 每个TIMER有4个捕获通道和4个匹配寄存器
寄存器介绍:
IR 中断寄存器
TCR 定时器控制寄存器
TC 定时器控制器
PR 预分频
MR0~MR3 匹配寄存器
MCR 匹配控制寄存器
CR0~CR3 捕获寄存器
CCR 捕获控制寄存器
EMR 外部匹配寄存器
定时器计数时钟频率计算如下:
计数时钟频率=Fpclk/N+1
N 为PR得值
下面是一个TIMER0得初始化(对于详细设置参阅数据手册)
void Timer0Init(void)
{
T0TC = 0; //定时器设置为0
T0PR = 0; //不分频采用pclk
TOMCR = 0X03; //设置当MR0 = TC 是产生中断并却复位tc
T0MR0 = Fpclk/10; //设置匹配值
T0TCR = 0X01; //启动定时器
}
2、用定时器进行脉宽测量
T0TC = 0;
TOPR = 0;
while( (IO0PIN & 0X00000001)!= 0);//等待P0变为低电平
T0TCR = 0X01;
while( (IO0PIN & 0X00000001)== 0);//等待p0变为高电平
T0TCR = 0X00;
time = T0TC;
3、一个定时器和中断
//使用GCC编译器时对一个中断服务程序得声明
void tc0 (void) __attribute__ ((interrupt)); // Generate Interrupt
void init_timer (void) {
T0MR0 = 149999;
T0MCR = 3;
T0TCR = 1;
T0MR0 = 149999;
T0MCR = 3;
T0TCR = 1;
//VICIntSelect = 0x00000000; 可省 因为默认都是IRQ
VICVectAddr0 = (unsigned long)tc0; //中断服务子程序地址
VICVectCntl0 = 0x20 | 0x04; //分配中断源编号 使能IRQ 中断
VICIntEnable = 0x00000010; //使能timer0中断
}
VICVectAddr0 = (unsigned long)tc0; //中断服务子程序地址
VICVectCntl0 = 0x20 | 0x04; //分配中断源编号 使能IRQ 中断
VICIntEnable = 0x00000010; //使能timer0中断
}
void tc0(void)
{
/* * * * */
}
- ARM TIMER 使用 控制 详解
- ARM-TIMER使用
- arm中断控制寄存器详解
- arm中断控制寄存器详解
- java多线程定时器Timer的使用详解
- ARM Timer Watchdog
- timer详解
- Timer详解
- 详解Timer
- 关于C#控制中对timer类的使用
- 关于C#控制中对timer类的使用
- 程式使用多個 Timer 控制項注意事項
- 使用Timer控制一定时间内跳转到新的Activity
- 使用timer来控制发送请求的间隔
- 使用Timer
- timer使用
- ARM的MMU存储访问权限控制详解
- Linux应用层的定时器Timer使用详解
- C#:调用API函数,弹出对话框更改打印机默认设置
- 将枚举值转换为DropDownList等的选项值
- 快速求平方根的算法 (卡马克方法)
- 太逗了··大家也来开心一下··
- 中文编码表
- ARM TIMER 使用 控制 详解
- android sdk安装与配置(转)
- Ubuntu9.10安装Apache+php+mysql+phpadmin
- waring
- 设置窗口颜色保护眼睛(win7/xp)
- HttpRequest访问Https带有证书并使用WSDL文档生成代理类方案(2)
- js跨域访问
- Mysql 日期类型
- oracle stand