请选择 进入手机版 | 继续访问电脑版

芯虎论坛

 找回密码
 立即注册
查看: 1232|回复: 0

华大串口配置问题,求解

[复制链接]

1

主题

1

帖子

9

积分

虎视眈眈

Rank: 1

积分
9
发表于 2020-7-26 01:22:03 | 显示全部楼层 |阅读模式

以下是串口配置,有参考网上例子,主函数调用USART1_Sendchar(‘a’)
void USART1_Sendchar(u8 Data)
{   
    while(Uart_GetStatus(UARTCH1,UartTC)==RESET);//等待字符发送完成
    Uart_SendData(UARTCH1,Data);   
}(此函数在STM32板子上测试过,正常输出a)


结果:无显示
/***************************************************************************
*   函 数 名: usart_init
*   功能说明: 串口初始化函数
*   形    参:
*   返 回 值:
*   说    明:
***************************************************************************/
void usart_init( u32 buad)
{
         
                stc_uart_config_t  stcCfg;
                stc_uart_baud_t stcBaud;       
          stc_uart_multimode_t stcMulti;
                stc_gpio_config_t stcGpioCfg;

                DDL_ZERO_STRUCT(stcGpioCfg);
          DDL_ZERO_STRUCT(stcMulti);
                DDL_ZERO_STRUCT(stcCfg);
                DDL_ZERO_STRUCT(stcBaud);
       
//外设时钟配置
                Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);//GPIO时钟使能
    Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);//UART1外设模块时钟使能
       
//IO配置       
                stcGpioCfg.enDir = GpioDirOut;
                Gpio_Init(GpioPortD,GpioPin0,&stcGpioCfg);  //配置PD0 为UART1 TX
          Gpio_SetAfMode(GpioPortD,GpioPin0,GpioAf3); //配置PD0 复用功能
          
                stcGpioCfg.enDir = GpioDirIn;
                Gpio_Init(GpioPortD,GpioPin1,&stcGpioCfg);  //配置PD1 为UART1 RX
                Gpio_SetAfMode(GpioPortD,GpioPin1,GpioAf3); //配置PD1 复用功能
       
//usart1配置
    stcMulti.enMulti_mode = UartNormal;          //正常工作模式
          Uart_SetMultiMode(UARTCH1,&stcMulti);        //多主机单独配置
       
                stcCfg.enRunMode        = UartMode3;              //模式3
                stcCfg.enStopBit        = Uart1bit;               //1位停止位
                stcCfg.bTouchNvic       =TRUE;                    //使能中断
                Uart_SetMMDOrCk(UARTCH1,UartEven);                //偶校验
                Uart_Init(UARTCH1, &stcCfg);                      //串口初始化
                               
                Uart_SetClkDiv(UARTCH1,Uart8Or16Div);//采样分频,模式1/3选择16分频
               
//波特率配置
    stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
                stcBaud.u32Baud=buad;
          stcBaud.enRunMode=UartMode3;
          Uart_CalScnt(UARTCH1,&stcBaud);

//串口中断使能
    Uart_ClrStatus(UARTCH1,UartRC);                ///<清接收请求
    Uart_ClrStatus(UARTCH1,UartTC);                ///<清发送请求
//    Uart_EnableIrq(UARTCH1,UartRxIrq);           ///<使能串口接收中断
    Uart_EnableIrq(UARTCH1,UartTxIrq);             ///<使能串口发送中断
    EnableNvic(UART1_IRQn, IrqLevel3, TRUE);       ///<系统中断使能
                Uart_EnableFunc(UARTCH1,UartTx);//使能收发
}

//UART1中断函数
void Uart1_IRQHandler(void)
{
    if(Uart_GetStatus(UARTCH1, UartRC))         //UART1数据接收
    {
        Uart_ClrStatus(UARTCH1, UartRC);        //清中断状态位
        Uart_ReceiveData(UARTCH1);   //接收数据字节
    }

    if(Uart_GetStatus(UARTCH1, UartTC))         //UART1数据发送
    {
        Uart_ClrStatus(UARTCH1, UartTC);        //清中断状态位
    }

}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|芯虎论坛 ( 辽ICP备18019618号 )

GMT+8, 2020-11-27 08:24 , Processed in 0.083646 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表