SylixOS的BSP开发实例之S3C2416 【第六篇】S3C2416 驱动之定时器

发布者:温柔的心情最新更新时间:2022-04-21 来源: eefocus关键字:SylixOS  BSP  S3C2416  定时器 手机看文章 扫描二维码
随时随地手机看文章

/*********************************************************************************************************

  定时器配置参数

*********************************************************************************************************/

#define TIMER_ENABLE            (1 << 0)                                /*  启动定时器                  */

#define TIMER_DISABLE           (0 << 0)                                /*  停止定时器                  */

 

#define TIMER_MANUAL_UPDATE     (1 << 1)                                /*  定时器手动重载              */

#define TIMER_UNMANUAL_UPDATE   (0 << 1)                                /*  定时器自动重载              */

 

#define TIMER_INVERTER          (1 << 2)                                /*  定时器输出翻转              */

#define TIMER_UNINVERTER        (0 << 2)                                /*  定时器输出不翻转            */

 

#define TIMER_RELOAD            (1 << 3)                                /*  循环计数                    */

#define TIMER_UNRELOAD          (0 << 3)                                /*  单次计数                    */

 

#define TIMER_DEADZONE          (1 << 4)                                /*  定时器0使用死区             */

#define TIMER_UNDEAD_ZONE       (0 << 4)                                /*  定时器0不使用死区           */



基本操作函数:


/*********************************************************************************************************

** 函数名称: s3c24xxTimerSetPrescaler0

** 功能描述: 设置定时器0 与 定时器1 的预分频因子

** 输    入: ucPrescaler     新的预分频因子

** 输    出: NONE

** 返    回: NONE

*********************************************************************************************************/

void  s3c24xxTimerSetPrescaler0 (unsigned char   ucPrescaler)

{

    rTCFG0 &= 0xFFFFFF00;

    rTCFG0 |= ucPrescaler;

}

/*********************************************************************************************************

** 函数名称: s3c24xxTimerSetPrescaler1

** 功能描述: 设置定时器2 3 与定时器4 的预分频因子

** 输    入: ucPrescaler     新的预分频因子

** 输    出: NONE

** 返    回: NONE

*********************************************************************************************************/

void  s3c24xxTimerSetPrescaler1 (unsigned char   ucPrescaler)

{

    rTCFG0 &= 0xFFFF00FF;

    rTCFG0 |= (unsigned int)(ucPrescaler << 8);

}

/*********************************************************************************************************

** 函数名称: s3c24xxTimerSetPrescaler

** 功能描述: 设置定时器2 3 与定时器4 的预分频因子

** 输    入: ucGroup         定时器组,0:定时器0,1   1:定时器 2,3,4

**           ucPrescaler     新的预分频因子

** 输    出: NONE

** 返    回:  0     正确

**           -1     错误

*********************************************************************************************************/

int  s3c24xxTimerSetPrescaler (unsigned char  ucGroup, unsigned char  ucPrescaler)

{

    switch (ucGroup) {

    case 0:                                                             /*  定时器组 0                  */

        s3c24xxTimerSetPrescaler0(ucPrescaler);

        break;

        

    case 1:                                                             /*  定时器组 1                  */

        s3c24xxTimerSetPrescaler1(ucPrescaler);

        break;

        

    default:                                                            /*  定时器组错误                */

        return  (-1);

    }

    

    return  (0);

}

/*********************************************************************************************************

** 函数名称: s3c24xxTimerSetDeadZone

** 功能描述: 设置 定时器0 的死区

** 输    入: ucDeadZone      死区大小

** 输    出: NONE

** 返    回: NONE

*********************************************************************************************************/

void  s3c24xxTimerSetDeadZone (unsigned char  ucDeadZone)

{

    rTCFG0 &= 0xFF00FFFF;

    rTCFG0 |= (unsigned int)(ucDeadZone << 16);

}

/*********************************************************************************************************

** 函数名称: s3c24xxTimerSetMuxCnt

** 功能描述: 设置定时器的分频器

** 输    入: ucTimer        定时器

**           ucDivider      分频值

**                          0000 = 1/2  0001 = 1/4 0010 = 1/8

**                          0011 = 1/16 01xx = External TCLKx

** 输    出: NONE

** 返    回:  0     正确

**           -1     错误

*********************************************************************************************************/

int  s3c24xxTimerSetMuxCnt (unsigned char  ucTimer, unsigned char  ucDivider)

{

    switch (ucTimer) {

    case 0:                                                             /*  定时器 0                    */

        rTCFG1 &= 0xFFFFFFF0;

        rTCFG1 |= ucDivider;

        break;

        

    case 1:                                                             /*  定时器 1                    */

        rTCFG1 &= 0xFFFFFF0F;

        rTCFG1 |= (ucDivider << 4);

        break;

    case 2:                                                             /*  定时器 2                    */

        rTCFG1 &= 0xFFFFF0FF;

        rTCFG1 |= (unsigned int)(ucDivider << 8);

        break;

    case 3:                                                             /*  定时器 3                    */

        rTCFG1 &= 0xFFFF0FFF;

        rTCFG1 |= (unsigned int)(ucDivider << 12);

        break;

    case 4:                                                             /*  定时器 4                    */

        rTCFG1 &= 0xFFF0FFFF;

        rTCFG1 |= (unsigned int)(ucDivider << 16);

        break;

    default:                                                            /*  定时器错误                  */

[1] [2] [3] [4]
关键字:SylixOS  BSP  S3C2416  定时器 引用地址:SylixOS的BSP开发实例之S3C2416 【第六篇】S3C2416 驱动之定时器

上一篇:SylixOS的BSP开发实例之S3C2416 【第五篇】S3C2416 启动模式之 NandFlash
下一篇:[初级教程]samsung s3c2416x 的启动方式

推荐阅读最新更新时间:2024-11-08 10:30

STM32定时器重映射
void TIM3_GPIOB5_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE); GPIO_AFIODeInit(); //将重映射恢复为初始值 //在程序中只可以调用一次,不然之前的设置就取消了 GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 ,ENABLE ); //重映射相应的外设 GPIO_InitStructure.
[单片机]
定时器中断使用+数码管动态显示
先上图 主要用到 EA:中断总控制 1 开启 0关闭 ET0 :定时器0溢出中断 1开启 0关闭 要点:中断号计算 公式:中断向量=8 中断号+3 timer0为例 中断向量=0x0b (11十进制) 中断号=(11-3)/8=1 中断函数: void timer0_interrupt() interrupt 1 //中断号为1 中断优先级可以查书。 数码管动态显示就是用一组io口 显示多个led数码管 扫描频率1~10ms 代码如下: #include reg52.h typedef unsigned char uint8; typedef unsi
[单片机]
<font color='red'>定时器</font>中断使用+数码管动态显示
LPC1768定时器普通定时
//其他通道的基本定时功能都能在这里实现 void Time0Mr0Init(u32 arr,u32 psc) { LPC_SC- PCONP |= (1 1); //打开功率控制 LPC_TIM0- TCR |= (1 1); //复位定时器 LPC_TIM0- MR0 = psc; //匹配寄存器与定时器计数器值相比较 LPC_TIM0- IR |= 0XFF; //清所有中断标志位 LPC_TIM0- MCR |= ((1 1)|(1 0)); //MR0与TC值匹配时将产生中断,TC复位
[单片机]
STM32L0开发笔记6: STM32CubeMX中定时器的配置方法
本文介绍在STM32CubeMX进行定时器的配置,产生固定时间中断的方法,以TIM2为例,步骤如下: 1、使能TIM2,指定时钟源。 2、查看数据手册,确定该定时器的内部数据总线,本文所引用的定时器内部数据总线为APB1。 3、在时钟配置中确认所选定时器的内部数据总线的时钟频率,我这里是32MHz。 4、在配置页中,选中相应的时钟,在Prescaler中输入预分频系数,在Counter Period中输入溢出系数。例如,本例中时钟为32MHz/32=1MHz,也就是一个周期为1us,我选择溢出系数为1000,则产生中断的时间为1ms。在Prescaler中输入总线频率的整数部分,可以轻易得到1us的
[单片机]
关于51单片机“定时器”的理解与应用
在 cpu 的一步步按照指令运行的过程中(主程序),可能会有其它的更紧急的需要做的事情(中断服务程序), 需要 cpu 暂时停止当前的程序(主程序),做完了(中断服务程序)之后,又可以继续去运行先前的程序(主程序)。 就像你正在吃饭,一边又在给水桶里放水,吃着吃着,水满了,你就得赶快去把水龙头关掉或者换一个空的水桶,再回来吃饭。 单片机的定时器就像是一个水桶 你让它启动了,也就是水龙头打开放水 定时器在每个机器周期自动加 1 水桶的水不断增加,最后就满出来了 定时器溢出时,你就要去做处理了 水桶的水满了,你应该处理一下了 处理完后,单片机又回到刚停止地方继续运行 水桶处理完,你也可以去做原来的事了 单片机的主程序是从
[单片机]
用单片机定时器编制电子时钟程序实例
  1.程序结构采用主程序和中断服务子程序结构.   2.定时中断程序 定时器1于方式1,16位,10ms中断一次 40H 10ms计数单元 41H 秒计数单元 42H 分计数单元 43H 时计数单元 定时方式1为10MS:THX=0ECH,TLX=78H 方式0为10MS: THX=63H,TLX=18H 3.参考程序 ; DISP EQU 0DE00H ;显示子程序入口 ; ORG 0000H START: AJMP MAIN ; ORG 001BH ;定时器1中断服 AJMP TINT1 ;务程序入口 ; ORG 0030H MAIN:
[单片机]
基于SVPWM以及实际MCU定时器输出脉冲的中心对齐模式
一、扇区矢量切换点确定 模型按七段式的三相桥臂切换时间搭建,如I扇区内,确定逆变臂的开关顺序为七段000-100-110-111-111-110-100-000; (第I扇区) 由于其为三角波调制,其定时 中心 对称、每个合成矢量的作用周期固定为Tpwm,则可定义: (三相切换点) 同理在第Ⅱ扇区内,逆变桥臂的开关顺序为000-010-110-111-111-110-010-000: (第2扇区) 在第Ⅲ扇区内,逆变桥臂的开关顺序为000-010-011-111-111-011-010-000: (第3扇区) 在第Ⅳ扇区内,逆变桥臂的开关顺序为000-001-011-111-111-011-001-000:
[嵌入式]
基于SVPWM以及实际MCU<font color='red'>定时器</font>输出脉冲的中心对齐模式
STM32F4 定时器TIM1输出七路PWM信号
【实验目的】 输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。 【实验内容】 输出7路PWM信号,并用示波器测量输出。 【实验原理】 1、时基单元初始化 TIM1和TIM8使用内部时钟时,时钟由APB2提供。但是定时器的时钟并不是直接由APB2提供,而是来自于输入为APB2的一个倍频器。当APB2的与分频系数为1时,这个倍频器不起作用,定时器时钟频率等于APB2时钟。当APB2预分频系数为其他时这个倍频器起作用。定时器的输入频率等于APB2的2倍。本实验中,APB2时钟被设置成了84M是对系统时钟进行2分频。因此定时器的输入时钟是84M×2 =
[单片机]
STM32F4 <font color='red'>定时器</font>TIM1输出七路PWM信号

推荐帖子

运算放大器参数解析与LTspice应用仿真》读书笔记二 基尔霍夫定 叠加定律 戴...
基本概念基尔霍夫定律(1)1、支路:(1)每个元件就是一条支路。(2)串联的元件我们视它为一条支路。(3)流入等于流出的电流的支路。2、节点:(1)支路与支路的连击点(2)两条以上的支路的连接点。(3)广义节点(任意闭合面)。3、回路:(1)闭合的支路。(2)闭合节点的集合。4、网孔:(1)其内部不包含任何支路的回路。(2)网孔一定是回路,但回路不一定是网孔。基尔霍夫电流定律简记为KCL,
damiaa 模拟电子
基于OPA842的高频电路的电压跟随器
本人菜鸟设计了一个OPA842的电压跟随器,用在电赛的高频题上,为了避免模块之间阻抗匹配问题,所以在每个模块后面接了一个电压跟随器。大家帮我看看我设计的电压跟随器对不对或者有什么不足的地方基于OPA842的高频电路的电压跟随器-IN与Out之间不要直接短接,用25电阻连接。 和输入端进行匹配? 限流?大凡这种带宽很宽的运放,要小心阅读芯片说明书。 我确实没仔细看,数据手册我当时就看了外围电路,发现没有跟随器我就跳过了,长记性了
氧离子di PCB设计
电压跟随器
这个电压跟随器的输入电压与输出电压差别竟然这么大,电流源转电压做输入信号,,本来只要直接放大就好,可放大倍数仿真与理论相差太大就想加个电压跟随器稳定输入信号,可现在又出现了新问题电压跟随器不要太相信仿真,仿真与实际相差太大,一定要实际测试,可以先用面包板搭建电路电路不对,输入应该电压源。如果用电流源,得有负载电阻。 我用那个电流源模拟我的硅光电池啊,电流源并上一个电阻,运放的输入端就是电压啊,难道不是吗?看了很多硅光测照度的文章都是这样把电流源转电压的呀 那个电流源是用来
井子92 模拟电子
写给平头哥RVB2601入围网友(参考资料、技术支持、经验分享、作品提交和评选细则)
活动详情:点此了解100块板卡全部派发给网友了,板卡到手后,网友就可以开启动手实战之旅啦,除了最终作品提交,还需要网友DIY过程发帖分享经验,以下对相关部分进行说明。发帖分享1、制作过程的经验分享,须在本活动专区首发;2、发布后,还需同步到平头哥社区一份,点此查看如何同步。作品提交1、作品提交截至日期到2022年6月6日,点此查看提交资料和要求,。2、评奖采用计分制度,满分100分,评奖细则见下方说明。所有
EEWORLD社区 玄铁RISC-V活动专区
ARM串口下载-Flash使用说明
Flash_Magic_ug.pdfARM串口下载-Flash使用说明看看
sssls2008 ARM技术
400G DR4、FR4、LR4、SR8 QSFP-DD 光模块概述
1.400G光模块中的QSFP-DD是指什么?QSFP-DD是四通道小型可插拔(QSFP)-双密度(DD)的缩写,是QSFP-DDMSA组织定义的高速热插拔外形尺寸,是光通信行业实现高密度联网的关键部分。作为400G光模块外形尺寸的最佳选择,此QSFP-DD光模块使数据中心能够根据需求有效地增长和扩展云容量。QSFP-DD与QSFP端口向前和向后兼容,也兼容现有的QSFP28光模块和AOC/DAC等。QSFP-DD连接器的电接口由8个电通道组成,每个通道以25Gb/sN
武汉格凌科技 综合技术交流
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved