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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hal.h

?? 1:打開IAR開發(fā)環(huán)境
?? H
?? 第 1 頁 / 共 5 頁
字號(hào):
// 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       *******************
*******************************************************************************
 _halFlashWritePage(...)_ 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:
The timers/counters can be configured in a number of ways. The following
functions allow basic configuration of the timers as interrupt timers,
pulse width modulators (PWM) and capture timers. Other uses require manual
configuration of the timers/counters.

Generally 3 steps are nescessary to start a timer:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费观看| 99久久精品免费看国产| 午夜精品久久久| 亚洲高清在线精品| 亚洲午夜久久久久中文字幕久| 亚洲丝袜自拍清纯另类| 久久久99精品免费观看| 久久久无码精品亚洲日韩按摩| 精品福利视频一区二区三区| 日韩欧美中文字幕一区| 日韩精品自拍偷拍| 久久伊人蜜桃av一区二区| 精品福利一区二区三区 | 久久只精品国产| 精品国产区一区| 国产农村妇女毛片精品久久麻豆 | 日韩精品一区二区三区中文不卡 | 日韩三级视频中文字幕| 粗大黑人巨茎大战欧美成人| 亚洲视频 欧洲视频| 日韩一区二区电影| 国内精品伊人久久久久影院对白| 欧美激情中文字幕一区二区| 久久综合视频网| 国产视频一区二区在线观看| 日本一区二区三区四区 | 国产精品青草综合久久久久99| 欧美激情一区二区三区四区| 中文字幕+乱码+中文字幕一区| 一区在线观看视频| 亚洲午夜成aⅴ人片| 日韩国产欧美三级| 韩国精品主播一区二区在线观看 | 国产一区二区伦理| 91亚洲永久精品| 91精品国产一区二区三区| 日韩欧美高清在线| 中文字幕精品三区| 亚洲福利一二三区| 国产精品一区二区91| 成人av电影在线网| 欧美日韩国产美女| 久久精品一区二区三区不卡牛牛| 亚洲视频综合在线| 青青草原综合久久大伊人精品| 国产福利一区二区三区视频在线 | 欧美一区二区啪啪| 国产精品久久久久久久第一福利 | 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩国产大片| 亚洲国产精品国自产拍av| 一区二区三区丝袜| 国产美女娇喘av呻吟久久| 色哟哟精品一区| 久久精品视频一区二区三区| 亚洲综合网站在线观看| 欧美性猛交xxxxxx富婆| 久久日一线二线三线suv| 亚洲欧美日韩国产中文在线| 久久精品72免费观看| 色综合激情久久| 久久久久99精品一区| 亚洲一二三区视频在线观看| 国产aⅴ综合色| 欧美电影免费提供在线观看| 亚洲综合av网| 成人久久视频在线观看| 4438x亚洲最大成人网| 亚洲欧洲av在线| 国产成人综合视频| 日韩午夜激情免费电影| 亚洲欧美日韩中文播放| 国产乱色国产精品免费视频| 欧美日韩在线播放一区| 日韩一区在线看| 国产成人精品三级| 久久综合久久久久88| 五月开心婷婷久久| 色呦呦日韩精品| 欧美国产在线观看| 国产乱码字幕精品高清av| 欧美一区二区三区性视频| 一区二区三区四区蜜桃| 成人的网站免费观看| 久久只精品国产| 紧缚奴在线一区二区三区| 在线不卡免费av| 亚洲国产精品影院| 欧美在线观看一二区| 中文字幕视频一区| av爱爱亚洲一区| 国产嫩草影院久久久久| 麻豆91在线观看| 日韩一区二区在线看片| 亚洲成国产人片在线观看| 91麻豆国产福利在线观看| 国产精品免费视频一区| 国产一区二区三区观看| 精品福利在线导航| 国产一级精品在线| 久久久久久久久久久久久久久99| 久久精品国产99久久6| 欧美一级片免费看| 免费观看日韩电影| 欧美成人女星排行榜| 奇米精品一区二区三区在线观看 | 亚洲精品视频自拍| 欧美在线小视频| 亚洲第一主播视频| 91精品午夜视频| 免费观看久久久4p| www激情久久| 国产91精品免费| **性色生活片久久毛片| 99国产精品国产精品久久| 国产精品高潮呻吟久久| aaa欧美色吧激情视频| 亚洲蜜臀av乱码久久精品蜜桃| 91小宝寻花一区二区三区| 一区二区三区四区不卡在线| 欧美午夜电影网| 琪琪一区二区三区| 久久伊人蜜桃av一区二区| 国产天堂亚洲国产碰碰| 国产福利视频一区二区三区| 国产精品久久777777| 91美女在线视频| 天天综合色天天综合色h| 欧美一级搡bbbb搡bbbb| 国产精品亚洲一区二区三区在线| 国产精品护士白丝一区av| 91福利在线免费观看| 五月综合激情婷婷六月色窝| 精品乱码亚洲一区二区不卡| 成人自拍视频在线观看| 一区二区三区不卡视频| 在线播放欧美女士性生活| 国产乱人伦偷精品视频不卡| 中文字幕在线观看不卡| 老司机精品视频线观看86 | 亚洲视频资源在线| 国产精品视频你懂的| 中文字幕免费在线观看视频一区| 精品久久一区二区三区| 精品88久久久久88久久久| 欧美一区二区精品久久911| 欧美一级日韩不卡播放免费| 欧美性高清videossexo| 欧美日韩日日骚| 91精品国产综合久久久蜜臀粉嫩 | 九九精品视频在线看| 午夜精品视频一区| 日本欧美一区二区在线观看| 成人免费毛片高清视频| 国产成人免费av在线| 在线不卡一区二区| 久久久99精品免费观看| 亚洲人成网站精品片在线观看| 亚洲专区一二三| 中文字幕一区二区三| 日韩欧美三级在线| 久久久久久久免费视频了| 日本一区二区三区免费乱视频 | 日韩一区二区三区免费观看| 色菇凉天天综合网| 国产喂奶挤奶一区二区三区| 欧美视频中文字幕| 国产91精品免费| 秋霞午夜鲁丝一区二区老狼| 国产精品全国免费观看高清| 91精品在线麻豆| 色狠狠av一区二区三区| 国产一区欧美二区| 亚洲成人一二三| 国产精品久久久久久久久免费桃花 | 精品99一区二区| 欧美视频中文字幕| 色综合夜色一区| 国产成a人亚洲| 国产一区高清在线| 奇米亚洲午夜久久精品| 亚洲在线观看免费| 亚洲天堂久久久久久久| 久久久午夜精品理论片中文字幕| 91麻豆精品国产91久久久使用方法| 日本伦理一区二区| 91污在线观看| 成人短视频下载| 国产成人三级在线观看| 久久精品国产成人一区二区三区| 午夜精品视频在线观看| 一区二区在线观看视频| 日韩美女视频19| 国产精品传媒视频| 国产色91在线| 精品久久久久久亚洲综合网 | 欧美日韩在线亚洲一区蜜芽| 丁香啪啪综合成人亚洲小说 | 欧洲日韩一区二区三区| 粉嫩高潮美女一区二区三区 |