亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? timer.h

?? TI DSP C6713 同相同公司C2812利用MSBSP多功能串口通訊的實例
?? H
字號:
/******************************************************************************/
/*  TIMER.H - TMS320C6x Peripheral Support Library Timers Support             */
/*                                                                            */
/*     This file provides the header for the DSP's timers support.            */
/*                                                                            */
/*                                                                            */
/*  MACRO FUNCTIONS:                                                          */
/*    TIMER_CTRL_ADDR(chan)                                                   */
/*    TIMER_PERIOD_ADDR(chan)                                                 */
/*    TIMER_COUNTER_ADDR(chan)                                                */
/*    TIMER_RESET(chan)                                                       */
/*    TIMER_INIT(chan,ctrl,per,cnt)                                           */
/*    TIMER_START(chan)                                                       */
/*    TIMER_STOP(chan)                                                        */
/*    TIMER_PAUSE(chan)							      */
/*    TIMER_RESUME(chan)                                                      */
/*    TIMER_MODE_SELECT(chan,mode)                                            */
/*    TIMER_CLK_INTERNAL(chan)                                                */
/*    TIMER_CLK_EXTERNAL(chan)                                                */
/*    TOUT_ENABLE(chan)                                                       */
/*    TOUT_DISABLE(chan)                                                      */
/*    TOUT_VAL(chan,val)                                                      */
/*    TOUT_ASSERT(chan)                                                       */
/*    TOUT_NEGATE(chan)                                                       */
/*    TINP_GET(chan)                                                          */
/*    TIMER_READ(chan)                                                        */
/*    TIMER_GET_COUNT(chan)                                                   */
/*    TIMER_SET_COUNT(chan,val)                                               */
/*    TIMER_AVAILABLE(chan)                                                   */
/*    TIMER_SET_PERIOD(chan,val)                                              */
/*    TIMER_GET_PERIOD(chan)                                                  */
/*    TIMER_GET_TSTAT(chan)                                                   */
/*                                                                            */
/*                                                                            */
/*  FUNCTIONS:                                                                */
/*    timer_delay_us() - delay specified number of timer periods              */
/*    timer_count2us() - converse the timer count into us                     */
/*    C6000_Set_Up_TIMER_Tick_In_Microseconds() - 設置中斷頻率                */
/*                                                                            */
/******************************************************************************/
#ifndef _TIMER_H_
#define _TIMER_H_

/*----------------------------------------------------------------------------*/
/* INCLUDES                                                                   */
/*----------------------------------------------------------------------------*/
#include "regs.h"
#include "math.h"

/*----------------------------------------------------------------------------*/
/* DEFINES AND MACROS                                                         */
/*----------------------------------------------------------------------------*/

/******************************************************************************/
/**************************** TIMER REGISTERS *********************************/


#define TIMER_BASE_ADDR 0x01940000

#define TIMER_CTRL_ADDR(chan) \
        (TIMER_BASE_ADDR + ((chan>>1) * 0x100000) + ((chan) * 0x40000))

#define TIMER_PERIOD_ADDR(chan) \
        (TIMER_BASE_ADDR + ((chan>>1) * 0x100000) + ((chan) * 0x40000) + 4)

#define TIMER_COUNTER_ADDR(chan) \
        (TIMER_BASE_ADDR + ((chan>>1) * 0x100000) + ((chan) * 0x40000) + 8)

#define TIMER0_CTRL_ADDR      TIMER_CTRL_ADDR(0)
#define TIMER0_PERIOD_ADDR    TIMER_PERIOD_ADDR(0)
#define TIMER0_COUNTER_ADDR   TIMER_COUNTER_ADDR(0)

#define TIMER1_CTRL_ADDR      TIMER_CTRL_ADDR(1)
#define TIMER1_PERIOD_ADDR    TIMER_PERIOD_ADDR(1)
#define TIMER1_COUNTER_ADDR   TIMER_COUNTER_ADDR(1)

#define TIMER2_CTRL_ADDR      TIMER_CTRL_ADDR(2)
#define TIMER2_PERIOD_ADDR    TIMER_PERIOD_ADDR(2)
#define TIMER2_COUNTER_ADDR   TIMER_COUNTER_ADDR(2)

#define TIMER0_CTRL     *(volatile unsigned int *)(TIMER0_CTRL_ADDR)
#define TIMER0_PERIOD   *(volatile unsigned int *)(TIMER0_PERIOD_ADDR)
#define TIMER0_COUNTER  *(volatile unsigned int *)(TIMER0_COUNTER_ADDR)

#define TIMER1_CTRL     *(volatile unsigned int *)(TIMER1_CTRL_ADDR)
#define TIMER1_PERIOD   *(volatile unsigned int *)(TIMER1_PERIOD_ADDR)
#define TIMER1_COUNTER  *(volatile unsigned int *)(TIMER1_COUNTER_ADDR)

#define TIMER2_CTRL     *(volatile unsigned int *)(TIMER2_CTRL_ADDR)
#define TIMER2_PERIOD   *(volatile unsigned int *)(TIMER2_PERIOD_ADDR)
#define TIMER2_COUNTER  *(volatile unsigned int *)(TIMER2_COUNTER_ADDR)

/* Timer Control Register Bitfield */
#define FUNC     0
#define INVOUT   1
#define DATOUT   2
#define DATIN    3
#define PWID     4
#define GO       6
#define HLD      7
#define C_P      8
#define CLKSRC   9
#define INVINP   10
#define TSTAT    11

#define TIMER_PULSE_MODE     0
#define TIMER_CLOCK_MODE     1

/*---------------------------------------------------------------------------*/
/* TIMER_RESET - reset timer to conditions defined by device reset           */
/*---------------------------------------------------------------------------*/
#define TIMER_RESET(chan) \
        { (*(unsigned int *)(TIMER_CTRL_ADDR(chan)) = 0);       \
          (*(unsigned int *)(TIMER_PERIOD_ADDR(chan)) = 0);     \
          (*(unsigned int *)(TIMER_COUNTER_ADDR(chan)) = 0);    \
        }

/*---------------------------------------------------------------------------*/
/* TIMER_INIT - initialize timer registers                                   */
/*---------------------------------------------------------------------------*/
#define TIMER_INIT(chan,ctrl,per,cnt) \
        { (*(unsigned int *)(TIMER_CTRL_ADDR(chan))    = ctrl); \
          (*(unsigned int *)(TIMER_PERIOD_ADDR(chan))  = per);  \
          (*(unsigned int *)(TIMER_COUNTER_ADDR(chan)) = cnt);  \
        }

/*---------------------------------------------------------------------------*/
/* TIMER_START - Sets both GO and HOLD bits in Timer Control Register which  */
/*               resets the Timer Counter Register and enables counting on   */
/*               on the next clock.  (GO bit autoclears)                     */
/*---------------------------------------------------------------------------*/
#define TIMER_START(chan) \
        REG_WRITE(TIMER_CTRL_ADDR(chan),(REG_READ(TIMER_CTRL_ADDR(chan)) | 0xc0))

/*---------------------------------------------------------------------------*/
/* TIMER_STOP - Asserts (clears) the HOLD bit in the Timer Control Register  */
/*---------------------------------------------------------------------------*/
#define TIMER_STOP(chan) \
        RESET_BIT(TIMER_CTRL_ADDR(chan),HLD)

/*---------------------------------------------------------------------------*/
/* TIMER_RESUME - Negates (sets) the HOLD bit to resume counting without     */
/*                resetting the counter register                             */
/*---------------------------------------------------------------------------*/
#define TIMER_RESUME(chan) \
        SET_BIT(TIMER_CTRL_ADDR(chan),HLD)

/*---------------------------------------------------------------------------*/
/* TIMER_MODE_SELECT - selects between PULSE and CLOCK modes                 */
/*---------------------------------------------------------------------------*/
#define TIMER_MODE_SELECT(chan,mode) \
        (mode == TIMER_CLOCK_MODE) ? SET_BIT(TIMER_CTRL_ADDR(chan),C_P) \
        : RESET_BIT(TIMER_CTRL_ADDR(chan),C_P)

/*---------------------------------------------------------------------------*/
/* TIMER_CLK_INTERNAL - sets CLKSRC to select CPU clock/8 as timer clock     */
/*---------------------------------------------------------------------------*/
#define TIMER_CLK_INTERNAL(chan) \
        SET_BIT(TIMER_CTRL_ADDR(chan),CLKSRC)

/*---------------------------------------------------------------------------*/
/* TIMER_CLK_EXTERNAL - clears CLKSRC to select TINP as timer clock          */
/*---------------------------------------------------------------------------*/
#define TIMER_CLK_EXTERNAL(chan) \
        RESET_BIT(TIMER_CTRL_ADDR(chan),CLKSRC)

/*---------------------------------------------------------------------------*/
/* TOUT_ENABLE - configures TOUT as general purpose output pin.              */
/*                                                                           */
/*---------------------------------------------------------------------------*/
#define TOUT_ENABLE(chan) \
        RESET_BIT(TIMER_CTRL_ADDR(chan),FUNC)

/*---------------------------------------------------------------------------*/
/* TOUT_DISABLE - configures TOUT as a timer pin; reflects value of TSTAT    */
/*                conditioned by INVOUT                                      */
/*---------------------------------------------------------------------------*/
#define TOUT_DISABLE(chan) \
        SET_BIT(TIMER_CTRL_ADDR(chan),FUNC)

/*---------------------------------------------------------------------------*/
/* TOUT_VAL - assigns val to TOUT pin when TOUT is enabled as general purpose*/
/*            output                                                         */
/*---------------------------------------------------------------------------*/
#define TOUT_VAL(chan,val) \
        ASSIGN_BIT_VAL(TIMER_CTRL_ADDR(chan),DATOUT,val)

/*---------------------------------------------------------------------------*/
/* TOUT_ASSERT - assigns 1 to TOUT pin when TOUT is enabled as general       */
/*               purpose output                                              */
/*---------------------------------------------------------------------------*/
#define TOUT_ASSERT(chan) \
        SET_BIT(TIMER_CTRL_ADDR(chan),DATOUT)

/*---------------------------------------------------------------------------*/
/* TOUT_NEGATE - assigns 0 to TOUT pin when TOUT is enabled as general       */
/*            purpose output                                                 */
/*---------------------------------------------------------------------------*/
#define TOUT_NEGATE(chan) \
        RESET_BIT(TIMER_CTRL_ADDR(chan),DATOUT)

/*---------------------------------------------------------------------------*/
/* TINP_GET - returns value on TINP input pin                                */
/*---------------------------------------------------------------------------*/
#define TINP_GET(chan) \
        GET_BIT(TIMER_CTRL_ADDR(chan),DATIN)

/*---------------------------------------------------------------------------*/
/* TIMER_READ - reads value of Timer Counter Register                      */
/*---------------------------------------------------------------------------*/
#define TIMER_READ(chan) \
        (REG_READ(TIMER_COUNTER_ADDR(chan)))

/*---------------------------------------------------------------------------*/
/* TIMER_GET_COUNT - reads value of Timer Counter Register                   */
/*---------------------------------------------------------------------------*/
#define TIMER_GET_COUNT(chan) \
        (REG_READ(TIMER_COUNTER_ADDR(chan)))

/*---------------------------------------------------------------------------*/
/* TIMER_SET_COUNT - reads value of Timer Counter Register                   */
/*---------------------------------------------------------------------------*/
#define TIMER_SET_COUNT(chan,val) \
        (REG_WRITE(TIMER_COUNTER_ADDR(chan),val))

/*---------------------------------------------------------------------------*/
/* TIMER_AVAILABLE - checks timer for availability; returns TRUE or FALSE    */
/*---------------------------------------------------------------------------*/
#define TIMER_AVAILABLE(chan) \
        (GET_BIT(TIMER_CTRL_ADDR(chan),HLD) ? 0 : 1)

/*---------------------------------------------------------------------------*/
/* TIMER_SET_PERIOD - sets value of Timer Period Register                    */
/*---------------------------------------------------------------------------*/
#define TIMER_SET_PERIOD(chan,val) \
        (REG_WRITE(TIMER_PERIOD_ADDR(chan),val))

/*---------------------------------------------------------------------------*/
/* TIMER_GET_PERIOD - returns value of Timer Period Register                 */
/*---------------------------------------------------------------------------*/
#define TIMER_GET_PERIOD(chan) \
        (REG_READ(TIMER_PERIOD_ADDR(chan)))

/*---------------------------------------------------------------------------*/
/* TIMER_GET_TSTAT - returns value of TSTAT bit in Timer Ctrl Register       */
/*---------------------------------------------------------------------------*/
#define TIMER_GET_TSTAT(chan) \
        (GET_BIT(TIMER_CTRL_ADDR(chan),TSTAT))

#define TIMER_PAUSE(chan) \
	TIMER_STOP(chan)
	

/*----------------------------------------------------------------------------*/
/* GLOBAL VARIABLES                                                           */
/*----------------------------------------------------------------------------*/
typedef   struct
{
   unsigned int 
              Control,
              Period,
              Counter;
}
TIMER_REG ;


//Internal clock source frequence for C64x when CPU clock at 600MHz	
#define Internal_CLK_F	(600*1000*1000)/8	    

/* 定義時鐘節拍的周期*/
#define US_PER_TICK		1000	// Number of microseconds per tick.
#define CYCLES_PER_TICK 	(Internal_CLK_F/1000000)*US_PER_TICK
// Number of clock cycles per tick.

/*Functions*/
void timer_start(int timerNum);
unsigned int timer_count2us(unsigned int count);
void delay_msec(int timerNum , unsigned int msec);
int C6000_Set_Up_TIMER_Tick_In_Microseconds (int Microseconds , int timerNum);

#endif /* ifndef _TIMER_H_ */




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品全国免费观看高清| 综合中文字幕亚洲| 国产香蕉久久精品综合网| 亚洲视频你懂的| 狠狠狠色丁香婷婷综合久久五月| 99久久国产综合精品麻豆| 777久久久精品| 中文字幕在线一区| 国产综合色产在线精品| 在线视频观看一区| 欧美韩日一区二区三区四区| 日韩电影在线观看电影| 色域天天综合网| 欧美国产乱子伦| 久久精品免费看| 欧美男人的天堂一二区| 亚洲欧美日韩国产一区二区三区| 国产一区二区导航在线播放| 3751色影院一区二区三区| 亚洲一区二区精品视频| 成人三级在线视频| 国产91精品一区二区麻豆网站| 91在线视频在线| 精品国产伦一区二区三区免费| 一区二区三区久久| 成人av免费在线观看| 久久亚洲一区二区三区明星换脸 | 在线观看网站黄不卡| 欧美国产精品中文字幕| 国产精品1区二区.| www国产精品av| 国产一区欧美一区| 久久先锋影音av| 国产在线精品免费| 91丨porny丨蝌蚪视频| 日韩精品一区二区三区视频| 首页国产欧美日韩丝袜| 7777精品伊人久久久大香线蕉完整版 | 国产精品一区二区三区四区| 精品国产乱码久久久久久老虎| 麻豆精品久久精品色综合| 欧美一区二区视频在线观看2020| 首页国产欧美日韩丝袜| 欧美精品精品一区| 久久精品国产99| 久久人人爽人人爽| 成人免费视频app| 中文字幕人成不卡一区| 色婷婷精品久久二区二区蜜臀av| 亚洲激情在线激情| 欧美日韩一级大片网址| 免费成人在线视频观看| 精品国免费一区二区三区| 欧美日韩精品一区二区三区四区| 午夜一区二区三区在线观看| 欧美亚洲国产一区在线观看网站| 亚洲男同性视频| 777欧美精品| 国产一区二区精品久久91| 亚洲欧洲av另类| 欧美吻胸吃奶大尺度电影| 蜜臀av性久久久久蜜臀av麻豆| 精品久久久影院| 99这里只有精品| 秋霞影院一区二区| 中文字幕第一区| 欧美男同性恋视频网站| 国产一区二区三区四区五区美女| 国产精品久线在线观看| 欧美日韩卡一卡二| 福利91精品一区二区三区| 一区二区三区影院| 久久综合久色欧美综合狠狠| 国产成人免费在线观看不卡| 国产三级精品在线| 欧美三级资源在线| 成人黄色网址在线观看| 亚洲成人精品影院| 欧美激情一区二区三区| 欧美日韩成人高清| 成人免费视频一区二区| 亚洲成人久久影院| 亚洲欧洲国产日本综合| 日韩视频在线你懂得| 99vv1com这只有精品| 奇米在线7777在线精品| 亚洲女同一区二区| 国产拍揄自揄精品视频麻豆| 91麻豆精品国产无毒不卡在线观看| 成人精品小蝌蚪| 青青草成人在线观看| 亚洲精品成人少妇| 国产拍欧美日韩视频二区| 678五月天丁香亚洲综合网| 不卡的av在线| 春色校园综合激情亚洲| 激情综合网天天干| 三级久久三级久久| 一区二区三区久久| 亚洲人精品午夜| 国产女人18毛片水真多成人如厕| 91精品国产乱码久久蜜臀| 色国产精品一区在线观看| 高清shemale亚洲人妖| 久久国产视频网| 日本欧美久久久久免费播放网| 亚洲精品国产精品乱码不99 | 91在线播放网址| 国产91丝袜在线18| 国产精品一区在线观看你懂的| 青青青伊人色综合久久| 日韩中文字幕区一区有砖一区| 一区二区三区欧美视频| 一区二区三区国产精华| 亚洲精品中文在线| 一区二区三区在线影院| 一区2区3区在线看| 亚洲综合另类小说| 亚洲成人av一区| 国产一区二区在线观看视频| 欧美一区二区三区性视频| 精品视频一区三区九区| 欧美性生活一区| 欧美综合欧美视频| 欧美精品一二三| 欧美电影影音先锋| 日韩一区二区在线观看| 欧美一区永久视频免费观看| 91麻豆精品91久久久久久清纯| 日韩欧美专区在线| 欧美精品一区二区三区视频| 久久久国际精品| 一区二区中文视频| 洋洋成人永久网站入口| 天天色综合天天| 美女免费视频一区| 粉嫩aⅴ一区二区三区四区五区 | 日韩美女天天操| 久久精品这里都是精品| 国产精品剧情在线亚洲| 一区二区三区成人在线视频| 日本最新不卡在线| 国产激情视频一区二区三区欧美 | av网站免费线看精品| 亚洲精品国产第一综合99久久| 亚洲丝袜制服诱惑| 亚洲综合成人在线| 久久国产人妖系列| 成人国产免费视频| 欧美日韩国产精品自在自线| 精品国免费一区二区三区| 日韩美女精品在线| 欧美aⅴ一区二区三区视频| 国产成人免费xxxxxxxx| 色哦色哦哦色天天综合| 日韩精品一区国产麻豆| 国产精品毛片a∨一区二区三区| 亚洲综合视频网| 国产一区二区三区| 日韩专区一卡二卡| 国产专区欧美精品| 91丨porny丨国产| 91精品国产综合久久精品app| 久久久精品tv| 亚洲大片在线观看| 国产成人高清在线| 91精品国产91热久久久做人人| 国产欧美日韩亚州综合| 日韩精品亚洲一区二区三区免费| 成人18视频在线播放| 日韩一区二区三区精品视频| 亚洲男人的天堂av| 国产麻豆精品久久一二三| 欧美日韩国产在线播放网站| 国产精品视频观看| 国产综合色视频| 3d动漫精品啪啪1区2区免费 | 免费在线一区观看| 91免费视频观看| 中文字幕国产精品一区二区| 日韩精品视频网| 欧美日本高清视频在线观看| 日韩一卡二卡三卡| 亚洲一区二区三区在线| 福利电影一区二区三区| 3atv在线一区二区三区| 夜夜揉揉日日人人青青一国产精品| 国产精品一区二区在线播放| 日韩午夜在线影院| 日韩精品欧美精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久精品一区二区三区四区| 青娱乐精品视频在线| 欧美肥妇free| 亚洲午夜激情av| 91高清视频免费看| 亚洲激情自拍视频| 色综合 综合色| 亚洲一区二区三区在线播放| 欧美午夜精品免费|