复旦微MCU爱好者天地
直播中

jinglixixi

8年用户 1640经验值
擅长:嵌入式技术 光电显示 接口/总线/驱动 控制/MCU
私信 关注

【复旦微电子FM33LG0xx开发板免费试用】+串口字节收发功能的测试

在厂家提供的例程中,基本都是通过串口来提供信息输出的,但在实际的应用中,不但要使用Printf函数来输出信息,也需要字节发送功能来与外部的串行通讯设备进行控制和数据交换。

为此,尝试了一下字节数据的发送功能,经测试使用下面的函数就可得到此功能,其函数内容如下:

void Test_Uartx(UART_Type *UARTx)
{
    uint8_t TestTxData[3] = {0x55, 0x4A, 0x01};
    uint8_t i;
    volatile uint8_t tmp08;
    Uartx_Init(UARTx);                       //初始化uartx配置
    //查询发送数组
    for(i = 0; i < 3; i++)
    {
        FL_UART_WriteTXBuff(UARTx,TestTxData[i]);                //将发送数据写入发送寄存器
        while(FL_SET !=
FL_UART_IsActiveFlag_TXBuffEmpty(UARTx));  
//等待发送完成
    }
    //转发接收到的数据
    while(1)
    {
        if(FL_SET ==
FL_UART_IsActiveFlag_RXBuffFull(UARTx))        //等待接收到一个字节
        {
            tmp08 =
FL_UART_ReadRXBuff(UARTx);           //uart接收中断标志可通过读取rxreg清除
            FL_UART_WriteTXBuff(UARTx,
tmp08);                //将收到的数据发送回去
        }
    }
}

测试该函数的主程序为:

int main(void)
{
    MF_Clock_Init();
    MF_SystemClock_Config();
    FL_Init();
    MF_Config_Init();
    UserInit();   
   Test_Uartx(UART0);
    while(1)
    {
        LED0_TOG();
        FL_DelayMs(1000);
    }
}

经程序的编译下载,其运行效果如图1所示。
image.png

图1 字节数据收发测试

其中,首先接收的3个字节是通过程序发送的,而其后的几个字节则是在完成发送处理后,对所接收到的数据进行回显。

从开发板的原理图可知,其直接通过了2个串行接口,但UART1是为了红外收发测试而设的,使用在测试时只好利用UART0来进行测试。

image.png

图2 串行接口

有了串口的字节发送功能做保障,后面就可以放心地进行串行设备控制了。

更多回帖

发帖
×
20
完善资料,
赚取积分