TQ2440 定时器中断--基本应用
来源:互联网 发布:销售培训网络课程 编辑:程序博客网 时间:2024/06/05 05:37
S3C2440定时器如下图所示,其时钟来源是PCLK
1.经过一个8bit的第一级预分频器对时钟频率分频(可以通过TCFG0配置)
2.然后经过第二级分频(分频系数已经固定的)(可以通过TCFG1配置)
3.通过上面的流向,最后时钟进入到控制逻辑中,作为定时器的时钟频率
下图中的TCMPB作为比较缓冲寄存器,用来存放比较值的,(可以作为当计数器计数到等于TCMPB值,使输出脉冲改变,如高电平变低电平,PWM的用途)
TCNTB作为定时器计数初值缓冲寄存器,当计数到0时,如果设置了自动加载,则会将TCNTB中的值自动加载到TCNT中
注:TCNT,TCMP为定时器控制逻辑内部的计数值和比较值。
可以通过读取TCNTO来读取定时器当前计数值
S3C2440 定时器总结:
1.经过一个8bit的第一级预分频器对时钟频率分频(可以通过TCFG0配置)
2.然后经过第二级分频(分频系数已经固定的)(可以通过TCFG1配置)
3.通过上面的流向,最后时钟进入到控制逻辑中,作为定时器的时钟频率
下图中的TCMPB作为比较缓冲寄存器,用来存放比较值的,(可以作为当计数器计数到等于TCMPB值,使输出脉冲改变,如高电平变低电平,PWM的用途)
TCNTB作为定时器计数初值缓冲寄存器,当计数到0时,如果设置了自动加载,则会将TCNTB中的值自动加载到TCNT中
注:TCNT,TCMP为定时器控制逻辑内部的计数值和比较值。
可以通过读取TCNTO来读取定时器当前计数值
S3C2440 定时器总结:
定时器0配置步骤:(其他的也类似)
1.配置TCFG0,第一级分频系数
2.配置TCFG1,第二级分频系数
3.配置TCNTB0,定时器计数初始值
4.配置TCON0,启动定时器和更新定时器计数值
如果有中断:
5.向中断向量表timer0安装中断服务函数
6.使能定时器中断,INTMSK
注意:在ISR和main函数里面都要访问的变量必须加上volatile(花了好长时间在这里调试,后看到大神讨论这问题才明白过来)
/*程序的功能是:led以1s的间隔闪烁使用H-Jtag烧写至Nor Flash中,位于Bank0*/#include "2440addr.h"#include "config.h"void __irq timer0ISR(void);void timer0Init(void);void ledInit(void);/*必须加volatile修饰*/volatile int ledFlag=1;void Main(void){ledInit();timer0Init();while(1){if (ledFlag){rGPBDAT &= ~(1<<5);}elserGPBDAT |= (1<<5);}}void ledInit(void){rGPBCON &= ~(3<<10);rGPBCON |= (1<<10);rGPBDAT &= ~(1<<5);}void timer0Init(void){/*设置中断向量表*/pISR_TIMER0 = (unsigned int)timer0ISR;/*配置第一级分频系数*/rTCFG0 &= ~(0xff);rTCFG0 |= 99;/*配置第二级分频*/rTCFG1 &= ~(0xf);rTCFG1 |= 2;/*设置定时器初始值*/rTCNTB0 = 62500;rTCON &= ~(0xf<<0);/*开启定时器,手动加载,自动加载,先以手动加载*/rTCON |= ((1<<0)|(1<<1)|(1<<3));/*取消手动加载,目的是先将初始值加载到TCNT中*/rTCON &= ~(1<<1);/*使能中断*/rSRCPND |= (1<<10);rINTPND |= (1<<10);rINTMSK &= ~(1<<10);}void __irq timer0ISR(void){ledFlag = !ledFlag;rSRCPND |= (1<<10);rINTPND |= (1<<10);}
0 0
- TQ2440 定时器中断--基本应用
- TQ2440之定时器中断0
- TQ2440裸机中断(定时器TIMER0中断)
- TQ2440 ADC基本应用
- TQ2440 软中断的基本使用
- TQ2440 Uart的基本应用
- 定时器中断方式应用
- TQ2440裸奔程序>>定时器4中断测试程序
- STM8S定时器基本中断定时
- s3c2440定时器中断的应用
- s3c2440定时器中断的应用
- s3c2440定时器中断的应用
- s3c2440定时器中断的应用
- stm32f4定时器基本应用
- TQ2440定时器之PWM
- TQ2440裸机中断(外部中断)
- 中断嵌套和定时器的应用
- TQ2440 中断按键驱动
- CSS盒子模型
- 保存数据方面的翻译
- 基于ASP.NET的蒙古文网站建立及若干问题分析
- Struts2内置拦截器的简要介绍
- MATLAB运行时 Linux安装错误
- TQ2440 定时器中断--基本应用
- 若干年来在CSDN回答问题的汇总(主要是excel,也有word)
- DM365发送264RTP视频流VLC播放成功
- eclipse如何忽略js文件报错(附图)
- 记录路径匹配的一个小问题
- 翻译
- ADO.NET,EF,Nhibernate比较
- 最大流(多个源点,多个汇点) 之 poj 1274
- 驱动程序调试方法printk解析