⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 hreadx实时嵌入式操作系统源代码,ARM移植. threadx是一个很好的多任务实时嵌入式操作系统
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               Timer.c
** Last modified Date:      2007-09-19
** Last Version:            1.0.0
** Descriptions:            S3C2410 TIMER 基础驱动
**
**--------------------------------------------------------------------------------------------------------
** Created by:              Hanhui
** Created date:            2007-09-19
** Version:                 1.0.0
** Descriptions:            S3C2410 TIMER 基础驱动
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/
#include "config.h"
#include "Timer.h"
/*********************************************************************************************************
** Function name:           timerSetPrescaler0
** Descriptions:            设置定时器0 与 定时器1 的预分频因子
** input parameters:        ucPrescaler     新的预分频因子
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void    timerSetPrescaler0 (unsigned char   ucPrescaler)
{
    rTCFG0 &= 0xFFFFFF00;
    rTCFG0 |= ucPrescaler;
}
/*********************************************************************************************************
** Function name:           timerSetPrescaler1
** Descriptions:            设置定时器2 3 与定时器4 的预分频因子
** input parameters:        ucPrescaler     新的预分频因子
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void    timerSetPrescaler1 (unsigned char   ucPrescaler)
{
    rTCFG0 &= 0xFFFF00FF;
    rTCFG0 |= (unsigned int)(ucPrescaler << 8);
}
/*********************************************************************************************************
** Function name:           timerSetPrescaler
** Descriptions:            设置定时器预分频因子
** input parameters:        ucGroup         定时器组,0:定时器0,1   1:定时器 2,3,4
**                          ucPrescaler     新的预分频因子
** output parameters:       NONE
** Returned value:          正确返回 0,  错误返回 -1
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int     timerSetPrescaler (unsigned char  ucGroup, unsigned char  ucPrescaler)
{
    switch (ucGroup) {
    
    case 0:                                                             /*  定时器组 0                  */
        timerSetPrescaler0(ucPrescaler);
        break;
        
    case 1:                                                             /*  定时器组 1                  */
        timerSetPrescaler1(ucPrescaler);
        break;
        
    default:                                                            /*  定时器组错误                */
        return  (-1);
    }
    
    return  (0);
}
/*********************************************************************************************************
** Function name:           timerSetDeadZone
** Descriptions:            设置 定时器0 的死区
** input parameters:        ucDeadZone      死区大小
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void    timerSetDeadZone (unsigned char  ucDeadZone)
{
    rTCFG0 &= 0xFF00FFFF;
    rTCFG0 |= (unsigned int)(ucDeadZone << 16);
}
/*********************************************************************************************************
** Function name:           timerSetMuxCnt
** Descriptions:            设置定时器的分频器
** input parameters:        ucTimer             定时器
**                          ucDivider           分频值   0000 = 1/2  0001 = 1/4 0010 = 1/8
**                                                       0011 = 1/16 01xx = External TCLKx
** output parameters:       NONE
** Returned value:          正确返回 0,  错误返回 -1
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int    timerSetMuxCnt (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:                                                            /*  定时器错误                  */
        return  (-1);
    }
    
    return  (0);
}
/*********************************************************************************************************
** Function name:           timerSetDMA
** Descriptions:            设置定时器的 DMA 链接
** input parameters:        连接DMA的定时器号   为 0 不连接, 1 为 TIMER0 依此类推
** output parameters:       NONE
** Returned value:          正确返回 0,  错误返回 -1
** Created by:              Hanhui
** Created Date:            2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int    timerSetDMA (unsigned char ucTimer)
{
    if (ucTimer > 5) {
        return  (-1);
    }
    
    rTCFG1 &= 0xFF0FFFFF;
    rTCFG1 |= (unsigned int)(ucTimer << 20);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -