[技术问答] 新唐M0 NU100系列 串口通信程序

[复制链接]
 楼主| 从小木丁丁 发表于 2013-12-22 20:44 | 显示全部楼层 |阅读模式
M0测试通过的代码

/*---------------------------------------------------------------------------------------------------------*/
/* 程序名称:M0串口通信程序                                                                                                    */
/* 功能:采用M0 62B的FIFO进行通信                                                                         */
/*---------------------------------------------------------------------------------------------------------*/
#include <stdio.h>
#include "Driver\DrvUART.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvSYS.h"
#include "NUC1xx.h"

                  
/*---------------------------------------------------------------------------------------------------------*/
/* 全局变量                                                                                        */
/*---------------------------------------------------------------------------------------------------------*/

/*---Using in UART Test -------------------*/
volatile uint8_t buffer[62];                        //串口缓冲
uint8_t UART_Flag;            //串口标志



/*---------------------------------------------------------------------------------------------------------*/
/* UART 回调函数                                                                                  */
/*---------------------------------------------------------------------------------------------------------*/
void UART_INT_HANDLE(uint32_t u32IntStatus)
{
        uint8_t i;
        if(u32IntStatus&DRVUART_RDAINT)
        {
                if(UART0->ISR.RDA_IF==1)
                {
                        for(i=0;i<62;i++)
                        {
                                buffer=UART0->DATA;
                                UART_Flag=1;
                        }
                }
        }        
}

//发送一个字节
void SendByte(uint8_t data)
{
        while(UART0->FSR.TX_FULL == 1);
        UART0->DATA=data;
}

//发送FIFO读取的数据
void SendString(void)
{
        uint8_t  i;

        for(i=0;i<62;i++)
        SendByte(buffer);
        while(UART0->FSR.TX_EMPTY==0);
}

/****************UART0配置函数***************************************/
void UART0_Config(void)
{
        STR_UART_T sParam;
                        /* Set UART Pin */
        DrvGPIO_InitFunction(E_FUNC_UART0);           //使能UART0接口

                /* Select UART Clock Source From 12Mhz*/
        DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC,0);  //选择UART接口的时钟位外部12MHz

                /* UART Setting */
    sParam.u32BaudRate                 = 9600;
    sParam.u8cDataBits                 = DRVUART_DATABITS_8;
    sParam.u8cStopBits                 = DRVUART_STOPBITS_1;
    sParam.u8cParity                 = DRVUART_PARITY_NONE;
    sParam.u8cRxTriggerLevel= DRVUART_FIFO_62BYTES;

        if(DrvUART_Open(UART_PORT0,&sParam) != E_SUCCESS)
        {
                printf("UART0 open failed\n");
        }//设定UART0的参数

        DrvUART_EnableInt(UART_PORT0,DRVUART_RDAINT,UART_INT_HANDLE);
        //使能串口中断,1接收中断状态 2发送保持寄存器空中断使能 3可接受数据中断使能        
}

/**********************RCC配置函数****************************/
void RCC_Config(void)
{
        
                        /* SYSCLK =>12Mhz*/
        UNLOCKREG();

    SYSCLK->WRCON.XTL12M_EN = 1;

         /* Waiting for 12M Xtal stalble */
    DrvSYS_Delay(5000);           //系统定时

         /* Run 48Mhz */
    DrvSYS_Open(48000);          // 选择系统时钟

        LOCKREG();

}



/*---------------------------------------------------------------------------------------------------------*/
/* Main Function                                                                                                            */
/*---------------------------------------------------------------------------------------------------------*/

int32_t main()
{
        RCC_Config();
           UART0_Config();
        while(1)
        {
                if(UART_Flag==1)
                {
                        UART_Flag=0;
                        SendString();         
                }
        }
}
dongnanxibei 发表于 2020-1-24 16:02 | 显示全部楼层
学习一下,FIFO。
xuanhuanzi 发表于 2020-1-24 16:34 | 显示全部楼层
入门技术。
wahahaheihei 发表于 2020-1-27 11:45 | 显示全部楼层
大佬用的是老版本的库
玛尼玛尼哄 发表于 2020-1-29 09:29 | 显示全部楼层
RCC配置是什么
zhuotuzi 发表于 2020-1-29 12:43 | 显示全部楼层
看着非常好理解。
天灵灵地灵灵 发表于 2020-1-30 19:18 | 显示全部楼层
没新版的好用
xuanhuanzi 发表于 2020-1-30 21:04 | 显示全部楼层
新版的不带Drv了。
yiyigirl2014 发表于 2020-1-31 13:52 | 显示全部楼层
要认真研究一下。
天灵灵地灵灵 发表于 2020-1-31 15:43 | 显示全部楼层
跟新版的不同,没看到若函数啊
xuanhuanzi 发表于 2020-1-31 15:55 | 显示全部楼层
这个操作还用到了回调函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

1761

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

43

主题

1761

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部