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

📄 csp_usart.h

📁 IAR 平台ATMEL 的例程, 和说明
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
* CSR, SR, IER, IDR, IMR : USART Status and Interrupt Registers
******************************************************************************/
#define ENDHEADER       (0x01ul << 24)    /* End of Header occurred on a LIN Frame        */
#define ENDMESS         (0x01ul << 25)    /* End of Message occurred on a LIN Frame       */
#define NOTRESP         (0x01ul << 26)    /* Not Responding detected on a LIN Frame       */
#define BITERROR        (0x01ul << 27)    /* Bit Error detectedon a LIN Frame             */
#define IPERROR         (0x01ul << 28)    /* Identity Parity Error detectedon a LIN Frame */
#define CHECKSUM        (0x01ul << 29)    /* Checksum error detected on a LIN Frame       */
#define WAKEUP          (0x01ul << 30)    /* Wake up detected                */

/* SR, IER, IDR, IMR Registers Only                                          */
#define RXRDY           (0x01ul << 0)     /* Receiver ready                  */
#define TXRDY           (0x01ul << 1)     /* Transmitter ready               */
#define RXBRK           (0x01ul << 2)     /* Receiver break                  */
#define ENDRX           (0x01ul << 3)     /* End of receiver PDC transfer    */
#define ENDTX           (0x01ul << 4)     /* End of transmitter PDC transfer */
#define USOVRE          (0x01ul << 5)     /* Overrun Error                   */
#define FRAME           (0x01ul << 6)     /* Framing Error                   */
#define PARE            (0x01ul << 7)     /* Parity Error                    */
#define TIMEOUT         (0x01ul << 8)     /* Receiver time out               */
#define TXEMPTY         (0x01ul << 9)     /* Transmitter empty               */
#define IDLE            (0x01ul << 10)    /* IDLE (J1708 Protocol)           */

/* SR Register Only                                                          */
#define IDLEFLAG        (0x01ul << 11)    /* IDLE Flag (J1708 Protocol)      */

/******************************************************************************
* RHR : USART Receiver Holding Register
******************************************************************************/
#define RXCHR           (0x1FFul << 0)    /* Received Character Mask         */

/******************************************************************************
* THR : USART Transmit Holding Register
******************************************************************************/
#define TXCHR           (0x1FFul << 0)    /* Character to be transmitted Mask*/

/******************************************************************************
* BRGR : USART Baud Rate Generator Register
******************************************************************************/
/* CD : Clock Divisor                                                        */
#define CD              (0xFFul << 0)     /* CD Mask                         */
#define CD_DISABLE      (0x00ul << 0)     /* Disable Clock                   */
#define CD_BYPASS       (0x01ul << 0)     /* Clock Divisor Bypass            */

/******************************************************************************
* RTOR : Receiver Time-out Register
******************************************************************************/
#define TO              (0xFFul << 0)     /* Time-out value Mask             */
#define TO_DISABLE      (0x00ul << 0)     /* Disable Receiver Time-out       */

/******************************************************************************
* TTGR : Transmit Time-guard Register
******************************************************************************/
#define TG              (0xFFul << 0)     /* Time-guard value Mask           */
#define TG_DISABLE      (0x00ul << 0)     /* Disable Transmit Time-guard     */

/******************************************************************************
* LIR : LIN Identifier Register
******************************************************************************/
#define IDENTIFIER      (0x3Ful << 0)     /* LIN's IDENTIFER Mask            */

/******************************************************************************
* SBLR : Sync Break Length Register
******************************************************************************/
#define SYNC_BRK        (0x1Ful << 0)     /* Sync Break Length Mask          */


/******************************************************************************
************************** USART Macros Definition ****************************
******************************************************************************/
/* PER, PDR, PSR : USART PIO Registers                                       */
#define CSP_USART_SET_PER(usart, val)  ((usart)->PER = (val))  /* Enable     */
#define CSP_USART_SET_PDR(usart, val)  ((usart)->PDR = (val))  /* Disable    */
#define CSP_USART_GET_PSR(usart)       ((usart)->PSR)          /* Status     */

/* OER, ODR, OSR : USART Output Registers                                    */
#define CSP_USART_SET_OER(usart, val)  ((usart)->OER = (val))  /* Enable     */
#define CSP_USART_SET_ODR(usart, val)  ((usart)->ODR = (val))  /* Disable    */
#define CSP_USART_GET_OSR(usart)       ((usart)->OSR)          /* Status     */

/* SODR, CODR, ODSR, PDSR : USART Output Data Registers                      */
#define CSP_USART_SET_SODR(usart, val) ((usart)->SODR = (val)) /* Set        */
#define CSP_USART_SET_CODR(usart, val) ((usart)->CODR = (val)) /* Clear      */
#define CSP_USART_GET_ODSR(usart)      ((usart)->ODSR)         /* Status     */
#define CSP_USART_GET_PDSR(usart)      ((usart)->PDSR)         /* Pin Status */

/* MDER, MDDR, MDSR : USART Multi-Driver Registers                           */
#define CSP_USART_SET_MDER(usart, val) ((usart)->MDER = (val)) /* Enable     */
#define CSP_USART_SET_MDDR(usart, val) ((usart)->MDDR = (val)) /* Disable    */
#define CSP_USART_GET_MDSR(usart)      ((usart)->MDSR)         /* Status     */

/* ECR, DCR, PMSR : USART Power Management Registers                         */
#define CSP_USART_SET_ECR(usart, val)  ((usart)->ECR = (val))  /* Enable     */
#define CSP_USART_SET_DCR(usart, val)  ((usart)->DCR = (val))  /* Disable    */
#define CSP_USART_GET_PMSR(usart)      ((usart)->PMSR)         /* Status     */

/* CR : USART Control Register                                               */
#define CSP_USART_SET_CR(usart, val)   ((usart)->CR = (val))

/* MR : USART Mode Register                                                  */
#define CSP_USART_SET_MR(usart, mode)  ((usart)->MR = (mode))
#define CSP_USART_GET_MR(usart)        ((usart)->MR)

/* SR : USART Status Register                                                */
#define CSP_USART_GET_SR(usart)        ((usart)->SR)

/* IER, IDR, IMR : USART Interrupt Registers                                 */
#define CSP_USART_SET_IER(usart, val)  ((usart)->IER = (val))  /* Enable     */
#define CSP_USART_SET_IDR(usart, val)  ((usart)->IDR = (val))  /* Disable    */
#define CSP_USART_GET_IMR(usart)       ((usart)->IMR)          /* Mask       */

/* RHR : USART Receive Holding Register                                      */
#define CSP_USART_GET_RHR(usart)       ((usart)->RHR)

/* THR : USART Transmit Holding Register                                     */
#define CSP_USART_SET_THR(usart, val)  ((usart)->THR = (val))

/* BRGR : USART Baud Rate Generator Register                                 */
#define CSP_USART_GET_BRGR(usart)      ((usart)->BRGR)
#define CSP_USART_SET_BRGR(usart, val) ((usart)->BRGR = (val))

/* RTOR : USART Receiver Time-out Register                                   */
#define CSP_USART_GET_RTOR(usart)      ((usart)->RTOR)
#define CSP_USART_SET_RTOR(usart, val) ((usart)->RTOR = (val))

/* TTGR : USART Transmitter Time-guard Register                              */
#define CSP_USART_GET_TTGR(usart)      ((usart)->TTGR)
#define CSP_USART_SET_TTGR(usart, val) ((usart)->TTGR = (val))

/* LIR : USART LIN Identifier Register                                       */
#define CSP_USART_GET_LIR(usart)       ((usart)->LIR)
#define CSP_USART_SET_LIR(usart, val)  ((usart)->LIR = (val))

/* DFWR0 : USART Data Field Write 0 Register                                 */
#define CSP_USART_GET_DFWR0(usart)        ((usart)->DFWR0)
#define CSP_USART_SET_DFWR0(usart, val)   ((usart)->DFWR0 = (val))

/* DFWR1 : USART Data Field Write 1 Register                                 */
#define CSP_USART_GET_DFWR1(usart)        ((usart)->DFWR1)
#define CSP_USART_SET_DFWR1(usart, val)   ((usart)->DFWR1 = (val))

/* DFRR0 : USART Data Field Read 0 Register                                  */
#define CSP_USART_GET_DFRR0(usart)        ((usart)->DFRR0)

/* DFRR1 : USART Data Field Read 1 Register                                  */
#define CSP_USART_GET_DFRR1(usart)        ((usart)->DFRR1)

/* SBLR : USART Sync Break Length Register                                   */
#define CSP_USART_GET_SBLR(usart)         ((usart)->SBLR)
#define CSP_USART_SET_SBLR(usart, val)    ((usart)->SBLR = (val))


/******************************************************************************
******************** USART External Functions Declaration *********************
******************************************************************************/
extern void CSP_USARTInit(CSP_USART_T *const usart, U32_T mode, U16_T baudrate, U8_T time_out, U8_T time_guard);
extern void CSP_USARTInitLin(CSP_USART_T *const usart, U8_T time_guard);
extern void CSP_USARTClose(CSP_USART_T *const usart);
extern void CSP_USARTConfigInterrupt(CSP_USART_T *const usart, U32_T int_mode, U32_T int_mask, U32_T callback);
extern void CSP_USARTEnable(CSP_USART_T *const usart, U32_T enable_mask);
extern void CSP_USARTDisable(CSP_USART_T *const usart, U32_T disable_mask);
extern void CSP_USARTReceive(CSP_USART_T *const usart, U8_T *data, U16_T length);
extern void CSP_USARTTransmit(CSP_USART_T *const usart, U8_T *data, U16_T length);
extern void CSP_USARTTransmitLinHeaderFrame(CSP_USART_T *const usart, U8_T sblr, U8_T identifier);
extern void CSP_USARTTransmitLinResponseFrame(CSP_USART_T *const usart, U8_T *data, U8_T length);
extern void CSP_USARTPioInit(CSP_USART_T *const usart, U32_T pio_mask, U32_T output_pio);
extern U32_T CSP_USARTPioGetStatus(CSP_USART_T *const usart);
extern void CSP_USARTPioClear(CSP_USART_T *const usart, U32_T pio_mask);
extern void CSP_USARTPioSet(CSP_USART_T *const usart, U32_T pio_mask);


#endif   /* CSP_USART_H */

⌨️ 快捷键说明

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