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

📄 uartinit.c

📁 基于Cortex-M3的全自动焊接机
💻 C
字号:
#include  <hw_memmap.h>
#include  <hw_types.h>
#include  <hw_ints.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <hw_uart.h>
#include  <interrupt.h>
#include  <sysctl.h>
#include  <gpio.h>
#include  <uart.h>
#include  <ctype.h>
#include "UartInit.h"
#include "define.h"


void  UART1_GetPutInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD);
    SysCtlPeriEnable(SYSCTL_PERIPH_UART1);                      //  使能UART模块
    GPIOPinTypeUART(GPIO_PORTD_BASE ,                 
                    GPIO_PIN_2 | GPIO_PIN_3);                   
    
    UARTConfigSet(UART1_BASE , 9600 , UART_CONFIG_WLEN_8 |      //  配置UART,波特率9600,数据位8
                                      UART_CONFIG_STOP_ONE |    //  停止位1
                                      UART_CONFIG_PAR_NONE);    //  无校验

    UARTIntEnable(UART1_BASE , UART_INT_RX | UART_INT_RT);                
    IntEnable(INT_UART1);                               //*  使能UART0总中断             */
    UARTEnable(UART1_BASE);                                     //  使能UART端口
}

/***************************************************************************************************
功能:通过UART1发送1个字符
参数:c是要发送的字符
返回:无
***************************************************************************************************/
void  UART1_Putc(const  char  c)
{
    UARTCharPut(UART1_BASE , c);
}


/***************************************************************************************************
功能:通过UART发送字符串
参数:s是要发送的字符串
返回:无
***************************************************************************************************/
void  UART1_Puts(const  char  *s)
{
    char  c;

    for (;;)
    {
        c  =  *(s++);

        if (c  ==  '\0')
        {
            break;
        }

        UART1_Putc(c);
    }
}


/***************************************************************************************************
功能:通过UART接收1个字符
参数:无
返回:接收到的字符
***************************************************************************************************/
char  UART1_Getc(void)
{
    char  c;

    c  =  UARTCharGet(UART1_BASE);

    return(c);
}


/***************************************************************************************************
功能:通过UART接收字符串(要求输入的字符串以"\r\n"结尾)
参数:s     保存接收数据的缓冲区(只接收可打印字符,即ASCII码32~127)
      size  接收缓冲区限制长度
返回:实际接收到的有效字符数量(字符串长度)
***************************************************************************************************/
int  UART1_Gets(char  *s ,  const  int  size)
{
    char  c;
    int   n  =  0;

    for (;;)
    {
        c  =  UART1_Getc();                                      //  接收1个字符

        if ( c  ==  '\r' )                                      //  如果遇到回车符,则跳出
        {
            break;
        }

        if ( n  <  size )                                       //  如果小于长度限制
        {
            if ( isprint(c) )                                   //  如果接收到的是可打印字符
            {
                *(s++)  =  c;                                   //  保存接收到的字符到缓冲区
                n++;
            }
        }
    }

    *s  =  '\0';                                                //  添加字符串结束标志

    return(n);                                                  //  返回有效的字符数
}


/*  UART初始化  */
void  uart0Init(void)
{
    data_reach = 0;
    
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA);              /*  使能UART0所在的GPIOA端口    */
    SysCtlPeriEnable(SYSCTL_PERIPH_UART0);              /*  使能UART0模块               */

    GPIOPinTypeUART(GPIO_PORTA_BASE ,                   /*  配置PA0和PA1为UART功能      */
                    GPIO_PIN_0 | GPIO_PIN_1);

    UARTConfigSet(UART0_BASE ,
                  9600 ,                                /*  波特率:9600                */
                  UART_CONFIG_WLEN_8 |                  /*  数据位:8                   */
                  UART_CONFIG_STOP_ONE |                /*  停止位:1                   */
                  UART_CONFIG_PAR_NONE);                /*  校验位:无                  */

    UARTFIFOLevelSet(UART0_BASE ,                       /*  设置发送和接收的FIFO深度    */
                     UART_FIFO_TX1_8 ,
                     UART_FIFO_RX7_8);
    
    
    /*不使能发送中断 */
    UARTIntEnable(UART0_BASE , UART_INT_RX | UART_INT_RT);               
    
    IntEnable(INT_UART0);                               /*  使能UART0总中断             */
    
    UARTEnable(UART0_BASE);                             /*  使能UART0端口               */
}

⌨️ 快捷键说明

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