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

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

?? hal.h

?? 無線單片機CC1110的一些使用源代碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
// 28800, 38400, 57600, 76800, 115200, 153600, 230400 or 307200. Possible
// options are defined below.
//
// Example usage:
//
//      UART_SETUP(0,115200,HIGH_STOP);
//
// This configures uart 0 for contact with "hyperTerminal", setting:
//      Baudrate:           115200
//      Data bits:          8
//      Parity:             None
//      Stop bits:          1
//      Flow control:       None
//

#define UART_SETUP(uart, baudRate, options)      \
   do {                                          \
      if((uart) == 0){                           \
         if(PERCFG & 0x01){                      \
            P1SEL |= 0x30;                       \
         } else {                                \
            P0SEL |= 0x0C;                       \
         }                                       \
      }                                          \
      else {                                     \
         if(PERCFG & 0x02){                      \
            P1SEL |= 0xC0;                       \
         } else {                                \
            P0SEL |= 0x30;                       \
         }                                       \
      }                                          \
                                                 \
      U##uart##GCR = BAUD_E((baudRate),CLKSPD);  \
      U##uart##BAUD = BAUD_M(baudRate);          \
                                                 \
      U##uart##CSR |= 0x80;                      \
                                                 \
                                                 \
      U##uart##UCR |= ((options) | 0x80);        \
                                                 \
      if((options) & TRANSFER_MSB_FIRST){        \
         U##uart##GCR |= 0x20;                   \
      }                                          \
   } while(0)




// Options for UART_SETUP macro
#define FLOW_CONTROL_ENABLE         0x40
#define FLOW_CONTROL_DISABLE        0x00
#define EVEN_PARITY                 0x20
#define ODD_PARITY                  0x00
#define NINE_BIT_TRANSFER           0x10
#define EIGHT_BIT_TRANSFER          0x00
#define PARITY_ENABLE               0x08
#define PARITY_DISABLE              0x00
#define TWO_STOP_BITS               0x04
#define ONE_STOP_BITS               0x00
#define HIGH_STOP                   0x02
#define LOW_STOP                    0x00
#define HIGH_START                  0x01
#define TRANSFER_MSB_FIRST          0x80
#define TRANSFER_MSB_LAST           0x00
#define UART_ENABLE_RECEIVE         0x40


// Example usage:
//   if(UART0_PARERR())
//     ...
#define UART_PARERR(num)      ((U##num##CSR & 0x08) == 0x08)
#define UART0_PARERR()        UART_PARERR(0)
#define UART1_PARERR()        UART_PARERR(1)

// Example usage:
//   if(UART1_FRAMEERR())
//     ...
#define UART_FRAMEERR(num)    ((U ##num## CSR & 0x10) == 0x10)
#define UART0_FRAMEERR()      UART_FRAMEERR(0)
#define UART1_FRAMEERR()      UART_FRAMEERR(1)


// Example usage:
//   char ch = 'A';
//   UART1_SEND(ch);
//   ...
//   UART1_RECEIVE(ch);
#define UART_SEND(num, x)   U##num##DBUF = x
#define UART0_SEND(x)       UART_SEND(0, x)
#define UART1_SEND(x)       UART_SEND(1, x)

#define UART_RECEIVE(num, x)  x = U##num##DBUF
#define UART0_RECEIVE(x)      UART_RECEIVE(0, x)
#define UART1_RECEIVE(x)      UART_RECEIVE(1, x)



/******************************************************************************
*******************    USART-SPI specific functions/macros  *******************
******************************************************************************/
// The macros in this section simplify SPI operation.

//*****************************************************************************
// Macro for setting up an SPI connection. The macro configures the appropriate
// pins for peripheral operation, sets the baudrate if the chip is configured
// to be SPI master, and sets the desired clock polarity and phase. Whether to
// transfer MSB or LSB first is also determined. _spi_ indicates whether
// to use spi 0 or 1. _baudRate_ must be one of 2400, 4800, 9600, 14400, 19200,
// 28800, 38400, 57600, 76800, 115200, 153600, 230400 or 307200.
// Possible options are defined below.

#define SPI_SETUP(spi, baudRate, options)           \
   do {                                             \
      U##spi##UCR = 0x80;                           \
      U##spi##CSR = 0x00;                           \
                                                    \
      if(spi == 0){                                 \
         if(PERCFG & 0x01){                         \
            P1SEL |= 0x3C;                          \
         } else {                                   \
            P0SEL |= 0x3C;                          \
         }                                          \
      }                                             \
      else {                                        \
         if(PERCFG & 0x02){                         \
            P1SEL |= 0xF0;                          \
         } else {                                   \
            P0SEL |= 0x3C;                          \
         }                                          \
      }                                             \
                                                    \
      if(options & SPI_SLAVE){                      \
         U##spi##CSR = 0x20;                        \
      }                                             \
      else {                                        \
         U##spi##GCR = BAUD_E(baudRate, CLKSPD);    \
         U##spi##BAUD = BAUD_M(baudRate);           \
      }                                             \
      U##spi##GCR |= (options & 0xE0);              \
   } while(0)


// Options for the SPI_SETUP macro.
#define SPI_SLAVE              0x01
#define SPI_MASTER             0x00
#define SPI_CLOCK_POL_LO       0x00
#define SPI_CLOCK_POL_HI       0x80
#define SPI_CLOCK_PHA_0        0x00
#define SPI_CLOCK_PHA_1        0x40
#define SPI_TRANSFER_MSB_FIRST 0x20
#define SPI_TRANSFER_MSB_LAST  0x00



/******************************************************************************
*******************       FLASH programming functions       *******************
*******************************************************************************
FlashWritePage(...)_ writes a whole flash page. Because code memory cannot
be read during flash write, the writing routines are copied to XDATA RAM. The
function is implemented in assembly code with file extensions .s51 rather than .c

The Direct Memory Access (DMA) may also be used for flash write.
******************************************************************************/

//Macro for erasing a given flash page
#define FLASH_ERASE_PAGE(page) \
   do{                         \
      FADDRH = (page) << 1;    \
      FADDRL = 0x00;           \
      FLASH_CONFIG(ERASE);     \
   }while (0)


// Macro for configuring flash access and setting flash access mode.
#define FLASH_CONFIG(options)     \
   do {                           \
      FWT  = ( 0x2A >> CLKSPD );  \
      FCTL = options;             \
   } while (0)

// _options_ may be the following:
#define READ_WHEN_NEED  0x00
#define CONTINOUS_READ  0x10
#define WRITE           0x02
#define ERASE           0x01
#define FLASH_BUSY      0x80

/******************************************************************************
* @fn  halFlashWritePage
*
* @brief
*       This function writes a byte field in XDATA RAM to a given flash
*       page. Normal program execution is run from flash. However during flash
*       write, flash memory is not available for reading. To circumvent this
*       problem the core operation of this procedure, namely the actual flash
*       write procedure, is copied to XDATA RAM and run from there. The flash
*       write procedure is copied to a 35 byte XDATA RAM buffer.
*       Prior to a write the page is erased.
*
*       This function disables interrupts when running, and re-enables interrupt
*       if interrupts were enabled at function entry.
*
* Parameters:
*
* @param  BYTE*	 pSrcAddr
*         Pointer to first byte in xdata space which is to be written to
*         flash. The number of bytes a flash page consists of starting from
*         this address will be written to the page _page_.
* @param  BYTE*	 pBuffer
*         Pointer to a buffer of 35 bytes in XDATA RAM to which the flash
*         write procedure
*         can be copied.
* @param  BYTE	    page
*         Indicates which of the flash pages the data is to be written to.
*
* @return void
*
******************************************************************************/
void halFlashWritePage(BYTE *pSrcAddr, BYTE *pBuffer, BYTE page);


/******************************************************************************
* @fn  halFlashErasePage
*
* @brief
*       This function erases a given flash page.
*
*       This function disables interrupts when running, and re-enables interrupt
*       if interrupts were enabled at function entry.
*
* Parameters:
*
* @param  BYTE*	 pBuffer
*         Pointer to a buffer of 10 bytes in XDATA RAM to which the flash
*         erase procedure can be copied.
* @param  BYTE	    page
*         Indicates which of the flash pages is to be erased.
*
* @return void
*
******************************************************************************/
void halFlashErasePage(BYTE* buffer, BYTE page);



/******************************************************************************
*******************      Power and clock management        ********************
*******************************************************************************

These macros are used to set power-mode, clock source and clock speed.

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

// Macro for getting the clock division factor
#define CLKSPD  (CLKCON & 0x07)

// Macro for getting the timer tick division factor.
#define TICKSPD ((CLKCON & 0x38) >> 3)

// Macro for checking status of the crystal oscillator
#define XOSC_STABLE (SLEEP & 0x40)

// Macro for checking status of the high frequency RC oscillator.
#define HIGH_FREQUENCY_RC_OSC_STABLE    (SLEEP & 0x20)


// Macro for setting power mode
#define SET_POWER_MODE(mode)                   \
   do {                                        \
      if(mode == 0)        { SLEEP &= ~0x03; } \
      else if (mode == 3)  { SLEEP |= 0x03;  } \
      else { SLEEP &= ~0x03; SLEEP |= mode;  } \
      PCON |= 0x01;                            \
      asm("NOP");                              \
   }while (0)


// Where _mode_ is one of
#define POWER_MODE_0  0x00  // Clock oscillators on, voltage regulator on
#define POWER_MODE_1  0x01  // 32.768 KHz oscillator on, voltage regulator on
#define POWER_MODE_2  0x02  // 32.768 KHz oscillator on, voltage regulator off
#define POWER_MODE_3  0x03  // All clock oscillators off, voltage regulator off

// Macro for setting the 32 KHz clock source
#define SET_32KHZ_CLOCK_SOURCE(source) \
   do {                                \
      if( source ) {                   \
         CLKCON |= 0x80;               \
      } else {                         \
         CLKCON &= ~0x80;              \
      }                                \
   } while (0)

// Where _source_ is one of
#define CRYSTAL 0x00
#define RC      0x01

// Macro for setting the main clock oscillator source,
//turns off the clock source not used
//changing to XOSC will take approx 150 us
#define SET_MAIN_CLOCK_SOURCE(source) \
   do {                               \
      if(source) {                    \
        CLKCON |= 0x40;               \
        while(!HIGH_FREQUENCY_RC_OSC_STABLE); \
        if(TICKSPD == 0){             \
          CLKCON |= 0x08;             \
        }                             \
        SLEEP |= 0x04;                \
      }                               \
      else {                          \
        SLEEP &= ~0x04;               \
        while(!XOSC_STABLE);          \
        asm("NOP");                   \
        CLKCON &= ~0x47;              \
        SLEEP |= 0x04;                \
      }                               \
   }while (0)



/******************************************************************************
*******************           Timer macros/functions        *******************
*******************************************************************************
General:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品理论片a级大结局| 天堂一区二区在线| 宅男噜噜噜66一区二区66| 99久久99久久久精品齐齐| 国产.精品.日韩.另类.中文.在线.播放| 蜜乳av一区二区| 激情综合网激情| 精品午夜一区二区三区在线观看| 毛片不卡一区二区| 激情综合色综合久久| 韩国v欧美v日本v亚洲v| 懂色中文一区二区在线播放| 成人av影院在线| 日本道精品一区二区三区| 欧美综合久久久| 欧美一区二区在线观看| 精品99999| 国产精品水嫩水嫩| 一区二区成人在线| 美女高潮久久久| 成人夜色视频网站在线观看| 91色综合久久久久婷婷| 欧美揉bbbbb揉bbbbb| 日韩欧美国产一区二区三区| 国产三级精品视频| 一区二区三区不卡视频| 日韩精品成人一区二区在线| 国产一区91精品张津瑜| 欧美精品丝袜久久久中文字幕| 欧美色网一区二区| 日韩亚洲国产中文字幕欧美| 国产色91在线| 亚洲成人av电影| 成人成人成人在线视频| 91精品婷婷国产综合久久 | 91视频国产资源| 日韩一级免费观看| 亚洲欧洲精品一区二区三区 | 欧美sm极限捆绑bd| 中文字幕精品一区二区精品绿巨人| 夜夜揉揉日日人人青青一国产精品| 久久疯狂做爰流白浆xx| 在线一区二区三区四区五区| 欧美成va人片在线观看| 亚洲与欧洲av电影| 国产成人一区在线| 欧美一区二区在线免费观看| 综合欧美一区二区三区| 极品尤物av久久免费看| 欧美性感一区二区三区| 国产拍欧美日韩视频二区| 国产裸体歌舞团一区二区| 99re热视频精品| 亚洲美女偷拍久久| 精品一区二区三区香蕉蜜桃 | 国产精品久久久久影视| 人人爽香蕉精品| 欧美午夜电影网| 国产精品不卡一区二区三区| 激情综合网最新| 日韩久久免费av| 日韩av不卡在线观看| 欧美日韩精品一区二区三区蜜桃| 亚洲欧洲精品一区二区三区不卡 | 一区二区成人在线| av电影一区二区| 国产精品嫩草99a| 粗大黑人巨茎大战欧美成人| 久久综合九色综合97婷婷女人| 热久久久久久久| 91麻豆精品国产综合久久久久久| 午夜久久久影院| 欧美日韩视频专区在线播放| 亚洲一区在线视频| 欧美综合视频在线观看| 亚洲电影一级片| 91麻豆精品久久久久蜜臀| 日韩av一级电影| 精品精品欲导航| 国产麻豆精品一区二区| 精品久久久久久久久久久院品网| 久久无码av三级| 国产一区二区美女诱惑| 国产日韩精品一区二区浪潮av| 理论电影国产精品| 久久香蕉国产线看观看99| 国产一区二区毛片| 五月天网站亚洲| 精品对白一区国产伦| 国产精品一区二区免费不卡| 国产日产欧产精品推荐色| 成人天堂资源www在线| 亚洲精品视频一区| 制服丝袜中文字幕一区| 久久国产精品色婷婷| 国产欧美精品一区aⅴ影院| eeuss鲁片一区二区三区| 一级做a爱片久久| 久久综合成人精品亚洲另类欧美| 成人av一区二区三区| 五月激情综合色| 国产无人区一区二区三区| 9色porny自拍视频一区二区| 制服丝袜日韩国产| 亚洲午夜久久久久久久久电影院 | 7777精品伊人久久久大香线蕉 | 日韩精品亚洲专区| 久久久蜜桃精品| 91在线免费看| 久久精品国产精品亚洲红杏| 国产欧美一二三区| 91麻豆精品国产综合久久久久久 | 欧美哺乳videos| 99久久久久久| 免费精品视频最新在线| 亚洲欧洲三级电影| 精品女同一区二区| 91在线视频官网| 久久se精品一区精品二区| 91日韩在线专区| 一区二区三区日韩欧美精品 | 国产日韩欧美激情| 欧美精品777| 色综合激情久久| 成人一区二区三区| 国产在线精品免费av| 亚洲五月六月丁香激情| 欧美激情综合网| 久久综合九色欧美综合狠狠| 欧美久久久久久久久久| 91久久人澡人人添人人爽欧美| 久久99久久久久久久久久久| 亚洲一本大道在线| 亚洲色图在线播放| 日本一区二区不卡视频| 精品国产1区2区3区| 91精品国模一区二区三区| 欧美视频日韩视频| 91在线视频网址| av中文字幕在线不卡| 国产精品一区二区久久精品爱涩 | 久久精品综合网| 精品在线观看视频| 夜夜亚洲天天久久| 国产精品久久久久国产精品日日| 久久婷婷国产综合国色天香 | 日韩一区二区免费高清| 色婷婷国产精品综合在线观看| 成人美女视频在线观看18| 国产一区二区日韩精品| 精品一区二区在线观看| 看电视剧不卡顿的网站| 奇米一区二区三区av| 麻豆免费精品视频| 久久99精品一区二区三区| 久99久精品视频免费观看| 久久激情五月婷婷| 国产在线日韩欧美| 高清国产午夜精品久久久久久| 国产精品77777| 不卡视频在线看| 在线日韩一区二区| 国产精品美女久久久久久| 欧美区视频在线观看| 欧美老年两性高潮| 日韩亚洲欧美综合| 国产丝袜在线精品| 亚洲婷婷综合色高清在线| 亚洲精品视频在线观看网站| 香港成人在线视频| 激情欧美一区二区三区在线观看| 国产精品一区二区三区四区| 99re成人在线| 日韩一级二级三级精品视频| 久久综合色之久久综合| 国产精品欧美极品| 亚洲综合一二区| 国产最新精品精品你懂的| 91亚洲精品久久久蜜桃网站 | 国产农村妇女毛片精品久久麻豆| 国产精品人妖ts系列视频| 亚洲国产欧美在线| 激情成人综合网| 99综合电影在线视频| 欧美年轻男男videosbes| 国产亚洲综合性久久久影院| 自拍偷拍欧美精品| 麻豆91精品视频| 91在线国产福利| 精品国产乱码久久久久久免费 | 欧美在线观看视频一区二区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 国产成人免费视频网站| 欧美日韩在线三级| 国产亚洲成aⅴ人片在线观看| 亚洲香肠在线观看| 丰满岳乱妇一区二区三区| 欧美美女直播网站| 国产精品电影一区二区三区| 日韩福利视频网|