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

📄 uart.c

📁 Freescale ColdFire MCF537x 家族的参考代码
💻 C
字号:
/* * File:        uart.c * Purpose:     Provide common ColdFire UART routines for serial IO * * Notes:        *               */#include "common.h"#include "uart.h"/* * To do -- enhance to a more complete driver with interrupts, dma, etc. *//********************************************************************//* * Initialize the UART for 8N1 operation, interrupts disabled, and * no hardware flow-control * * Parameters: *  uartch      UART channel to initialize *  sysclk      UART System Clock (in KHz) *  baud        UART baud rate *  settings    Initialization parameters */void uart_init (int uartch, int sysclk, int baud, int settings){    register uint16 ubgs;    /*      * Reset Transmitter      */    MCF_UART_UCR(uartch) = MCF_UART_UCR_RESET_TX;    /*      * Reset Receiver      */    MCF_UART_UCR(uartch) = MCF_UART_UCR_RESET_RX;    /*      * Reset Mode Register      */    MCF_UART_UCR(uartch) = MCF_UART_UCR_RESET_MR;    /*      * No parity, 8-bits per character      */    MCF_UART_UMR(uartch) = (0        | MCF_UART_UMR_PM_NONE        | MCF_UART_UMR_BC_8);    /*      * No echo or loopback, 1 stop bit      */    MCF_UART_UMR(uartch) = (0        | MCF_UART_UMR_CM_NORMAL        | MCF_UART_UMR_SB_STOP_BITS_1);    /*      * Set Rx and Tx baud by timer      */    MCF_UART_UCSR(uartch) = (0        | MCF_UART_UCSR_RCS_SYS_CLK        | MCF_UART_UCSR_TCS_SYS_CLK);    /*      * Mask all UART interrupts      */    MCF_UART_UIMR(uartch) = 0;                     /*      * Calculate baud settings      */    ubgs = (uint16)((sysclk*1000)/(baud * 32));    MCF_UART_UBG1(uartch) = (uint8)((ubgs & 0xFF00) >> 8);    MCF_UART_UBG2(uartch) = (uint8)(ubgs & 0x00FF);    /*      * Enable receiver and transmitter      */    MCF_UART_UCR(uartch) = (0        | MCF_UART_UCR_TX_ENABLED        | MCF_UART_UCR_RX_ENABLED);}/********************************************************************//* * Wait for a character to be received on the specified UART * * Return Values: *  the received character */charuart_getchar (int channel){    /* Wait until character has been received */    while (!(MCF_UART_USR(channel) & MCF_UART_USR_RXRDY))        ;     return MCF_UART_URB(channel);}/********************************************************************//* * Wait for space in the UART Tx FIFO and then send a character */ voiduart_putchar (int channel, char ch){    /* Wait until space is available in the FIFO */    while (!(MCF_UART_USR(channel) & MCF_UART_USR_TXRDY))        ;    /* Send the character */    MCF_UART_UTB(channel) = (uint8)ch;}/********************************************************************//* * Check to see if a character has been received * * Return values: *  0       No character received *  1       Character has been received */intuart_getchar_present (int channel){    return (MCF_UART_USR(channel) & MCF_UART_USR_RXRDY);}/********************************************************************/    

⌨️ 快捷键说明

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