2410共有5个定时器,其中timer4没有引脚输出,其余都可以用作pwm。
0、1共用一个预分频器
2、3、4共用一个预分频器
TCFG0 [0:7][8:15] 分别对应这两个预分频器,分频值不要忘了+1,因为分频值不能为0
TCFG1[0:3][][][][][] 分别对应这每个定时器自己的分频值
TCNTB0 定时器的计数值
TCMPB0 定时器的比较值
我理解的PWM,在一个固定的时间周期中,也就是TCNTB0这个值,一个周期开始后,TCNTB0开始减1计数,当减到和TCMPB0 相等时,TOUT0输出反转,当TCNTB0减到0时,TOUT0输出再次反转,一个新的计数周期开始。
TCNTO0 定时器监听寄存器
TCON0 控制寄存器
在第一次使用定时器时,需要手动更新位1以使TCNTB0/TCMPB0 装入内部寄存器。CNT0/TCMP0中。下一次如果还要设置这一位,需要先将它清0.
DMA模式
给出一个实现timer0的例子
void init_irq(void)
{
rPRIORITY = (rPRIORITY & ((~0x01) | (0x03 << 7))) | (0x0 << 7);
// rINTMSK &= (~(1 << 0)) & (~(1 << 2)) & (~(1 << 5));
rINTMSK &= ((~(1 << 0)) & (~(1 << 2)));
pISR_EINT0 = (unsigned)Eint0_ISR;
pISR_EINT2 = (unsigned)Eint2_ISR;
//pISR_EINT4_7 = (unsigned)Eint4_7_ISR;
rINTMSK &= ~(1 << 10); //允许timer0的中断
pISR_TIMER0 = (unsigned)Eint10_TIMER0_ISR; //将中断函数赋值
}
void Timer0_init()
{
//rTCFG0设置预分频器
//PCLK 50M/200 = 250KHz
rTCFG0 = (rTCFG0 & (~(0xFF << 0))) | (200 << 0);
//rTCFG1设置工作在哪种分频 2、4、8、16或者是TCLK0/TCLK1
rTCFG1 = (rTCFG1 & (~(0xF << 0))) | (3 << 0);//16分频
rTCNTB0 = 30000; //计数值
rTCON |=(1 << 1); //手动将计数值装入TCNT0中
rTCON &= ~(1 << 1); // 这位一定要再次清零,否则,定时器不会自动装载
rTCON |=(1 << 3) | (1 << 0);//开启定时器,并自动装载
}
void __irq Eint10_TIMER0_ISR(void)
{
i++;
rSRCPND = BIT_TIMER0;
rINTPND = BIT_TIMER0;
}
关键字:s3c2410 timer 定时器
引用地址:
s3c2410的timer定时器的使用
推荐阅读最新更新时间:2024-03-16 14:46
Linux NAND FLASH驱动代码分析
FLASH驱动在嵌入式系统中有着举足轻重的位置,而目前市场上NAND FLASH的价格又要便宜与NOR FLASH,随着越来越多的平台支持从NAND FLASH中启动,掌握NAND flash的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对NAND FLASH驱动只是简单的修改,对其工作原理并不太清楚,下面我们来分析一下NAND FLASH的代码流程,从中体会块设备的代码之美。 在学习NAND FLASH驱动之前,我们需要对块设备中下面的重要2点有个认识: 1.gendisk: 描述块设备实体(一整个nandflash芯片)的结构体 整个块设备的注册过程都是围绕ge
[单片机]
STM32定时器配置,定时计数模式下总结
文章结构: —— 一、定时器基本介绍 —— 二、普通定时器详细介绍TIM2-TIM5 —— 三、定时器代码实例 一、定时器基本介绍 之前有用过野火的学习板上面讲解很详细,所以直接上野火官方的资料吧,作为学习参考笔记发出来 二、普通定时器详细介绍TIM2-TIM5 2.1 时钟来源 计数器时钟可以由下列时钟源提供: ·内部时钟(CK_INT) ·外部时钟模式1:外部输入脚(TIx) ·外部时钟模式2:外部触发输入(ETR) ·内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。
[单片机]
嵌入式学习笔记10——51单片机之中断定时器中断
1. CPU时序的有关知识 (1)振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。 (2)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 (3)机器周期:1个机器周期含6个状态周期,12个振荡周期(使用计时器时,每隔一个机器周期计时器加1)。 (4)指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。 2. 学习定时器前须明白: (1)51单片机有2组定时器/计数器(52单片机有三组),可定时或计数。 (2)定时器/计数器和单片机的CPU是相互独立的,定时器/计数器工作的过程是自动完成的,不需要CPU的参与。 (3)51单片机中的定时器/计
[单片机]
STM8学习笔记---定时器 TIM2功能实现
STM8的TIM2、TIM3、TIM5是16位通用寄存器,他们的操作方法一样。 主要功能如下 相关寄存器如下: 如果只用到定时功能的话,需要用到的寄存器有自动装载寄存器ARR、预分频寄存器PSCR、事件产生寄存器EGR、状态寄存器SR、控制寄存器CR、中断使能寄存器IER。 此处用TIM2实验,定时器2初始化代码如下: void Timer2_Init( void ) { TIM2_ARRH = ( unsigned char )( 1000 8 ); //定时1ms TIM2_ARRL = ( unsigned char )( 1000 ); TIM2_PSCR = 0x04; //
[单片机]
[单片机框架] [app_led] 利用软定时器实现闪烁和呼吸等灯光模式
使用例子: 任意地点初始化:app_led_init(); app_led_indicate(灯号,灯光类型,周期时间,重装载值); 注:需要先实现对应PWM函数 文件代码如下 app_led.c /******************************************************************************** * @file app_led.c * @author jianqiang.xue * @Version V1.0.0 * @Date 2021-04-20 * @brief LED灯光效果 *******************************
[单片机]
s3c2410物理地址和虚拟地址空间
下面是物理地址空间(没有包括物理寄存器的物理地址空间)分布图:
[单片机]
《初学者C51自学笔记》之定时器代码(三)
初始化程序: 对TMOD赋值,以确定T0和T1的工作方式。 计算初值,并将其写入TH0、TL0或TH1、TL1。 中断方式时,则对EA赋值,开放定时器中断。 使TR0或TR1置位,启动定时/计数器定时或计数。 //实现功能:数码管一秒加一; #include reg52.h #define uchar unsigned char #define uint unsigned int unsigned char code smg_du ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; void
[单片机]
S3C2410设计的无线数据采集系统
手持终端的功能越来越强大,数据处理能力也越来越强,人们对其无线通信功能的要求也越来越高。为此,各种无线设备进入人们的生活,在此基础之上,大量的无线设备业已进入工业生产领域。在工业或者工厂底层环境中,使用无线技术具有很多优势;利用无线技术可以解决工业生产中线路布局烦琐的困境,也可以避免恶劣环境对线路腐蚀等问题。 1 系统设计 在此,把嵌入式技术与无线电台通信技术相结合,设计一种无线数据采集系统。该系统分为数据采集模块、数据传输/接收模块、数据处理模块,如图1所示。数据采集模块通过将传感器得到的模拟信号转换成数字信号,再用无线芯片发送出去。A/D转换芯片采用MAX132;数据传输芯片采用无线传输/接收芯片IA4421。用单片机配置
[模拟电子]