首先,需要知道UART部分可以支持如下的功能,并且了解一下LRDASIR、LIN模式、RS485模式等等这些模式是用来干什么的。一定要了解清楚才行,不然就算写出来程序来也不知道他们的用途是干什么的。接着要了解的是"DrvUART.h"和"DrvUART.c"两个文件的函数。特别是以下几个函数int32_tDrvUART_Open();//这个函数用用初始化UART的,换句话来说使用UART之前必须进行该操作,其中参数包括了那么UART口,如UART0,此外还有一个结构休 STR_UART_TsParam,这个结构休含有波特率,数据位、停止位、检验位和触发电平。此外,DrvUART_Open()这个函数里面的一部分代码编写也需要了解清楚,代码如下:tUART=(UART_T*)((uint32_t)UART0u32Port);/*TxFIFOReset&RxFIFOReset&FIFOModeEnable*/tUART->FCR.TFR=1;tUART->FCR.RFR=1;/*SetRxTriggerLevel*/tUART->FCR.RFITL=sParam->u8cRxTriggerLevel; /*SetParity&Databits&Stopbits*/tUART->LCR.SPE =((sParam->u8cParity)&0x4)?1:0;tUART->LCR.EPE =((sParam->u8cParity)&0x2)?1:0;tUART->LCR.PBE =((sParam->u8cParity)&0x1)?1:0;tUART->LCR.WLS =sParam->u8cDataBits;tUART->LCR.NSB =sParam->u8cStopBits;/*SetTime-Out*/tUART->TOR.TOIC =sParam->u8TimeOut;/*SetBaudRate*/BaudRateCalculator(GetUartClk(),sParam->u32BaudRate,&tUART->BAUD);分析如下:/*TxFIFOReset&RxFIFOReset&FIFOModeEnable*tUART->FCR.TFR=1;//请看下图的TFR的说明tUART->FCR.RFR=1;//请看下图RFR的说明/*SetRxTriggerLevel*/看下图各位的设置说明tUART->FCR.RFITL=sParam->u8cRxTriggerLevel; /*SetParity&Databits&Stopbits*/如下图各位的设置说明tUART->LCR.SPE =((sParam->u8cParity)&0x4)?1:0;tUART->LCR.EPE =((sParam->u8cParity)&0x2)?1:0;tUART->LCR.PBE =((sParam->u8cParity)&0x1)?1:0; tUART->LCR.WLS =sParam->u8cDataBits;tUART->LCR.NSB =sParam->u8cStopBits;对于其他寄存器的初始状态的设置请看RegisterDescription这部分各个寄存器的说明。BaudRateCalculator()//这个函数是用来计算波特率的,可以具体
计算公式
六西格玛计算公式下载结构力学静力计算公式下载重复性计算公式下载六西格玛计算公式下载年假计算公式
由下面得知。其中第一个参数是UART源时钟,第二个参数是用户设置的波特率,第三个参数是用来保存这个用户设置的波特率(其实现在要算出BRD这个值)下面部分函数还没有开始写。自己可以先探索一下。voidDrvUART_Close();//关闭UARTvoidDrvUART_EnableInt();//该功能是用来启用指定的UART中断,特别要了解第三个参数的用途voidDrvUART_DisableInt();voidDrvUART_SetClcok(uint8_tu8ClcokSrc,uint8_tu8ClcokDiv);int32_tDrvUART_Write();//功能是将数据写入到传送缓冲器通过UART数据传输int32_tDrvUART_Read();//该功能是用来读取从RXFIFO和数据接收的数据将被存放在pu8RxBuf1、2、