CH582使用UART0问题

历程中是UART1,但改为UART0后为什么就是不好使,是哪里还需要配置吗,引脚什么的都改了,线也没接错,有没有大哥救救孩子 - - 

#include "CH58x_common.h"


uint8_t TxBuff[] = "This is a tx exam\r\n";

uint8_t RxBuff[100];

uint8_t trigB;


/*********************************************************************

 * @fn      main

 *

 * @brief   主函数

 *

 * @return  none

 */

int main()

{

    uint8_t len;


    SetSysClock(CLK_SOURCE_PLL_60MHz);


    /* 配置串口1:先配置IO口模式,再配置串口 */

    GPIOB_SetBits(bTXD0);

    GPIOB_ModeCfg(bRXD0, GPIO_ModeIN_PU);      // RXD-配置上拉输入

    GPIOB_ModeCfg(bTXD0, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平

    UART0_DefInit();


#if 1 // 测试串口发送字符串

    UART0_SendString(TxBuff, sizeof(TxBuff));


#endif


#if 0 // 查询方式:接收数据后发送出去

    while(1)

    {

        len = UART0_RecvString(RxBuff);

        if(len)

        {

            UART0_SendString(RxBuff, len);

        }

    }


#endif


#if 1 // 中断方式:接收数据后发送出去

    UART0_ByteTrigCfg(UART_1BYTE_TRIG);

    trigB = 1;

    UART0_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);

    PFIC_EnableIRQ(UART0_IRQn);

#endif


    while(1);

}


/*********************************************************************

 * @fn      UART1_IRQHandler

 *

 * @brief   UART1中断函数

 *

 * @return  none

 */

__INTERRUPT

__HIGH_CODE

void UART0_IRQHandler(void)

{

    volatile uint8_t i;


    switch (UART0_GetITFlag())

    {

        case UART_II_LINE_STAT: // 线路状态错误

        {

            UART0_GetLinSTA();

            break;

        }


        case UART_II_RECV_RDY: // 数据达到设置触发点

            for(i = 0; i != trigB; i++)

            {

                RxBuff[i] = UART0_RecvByte();

                UART0_SendByte(RxBuff[i]);

            }

            break;


        case UART_II_RECV_TOUT: // 接收超时,暂时一帧数据接收完成

            i = UART0_RecvString(RxBuff);

            UART0_SendString(RxBuff, i);

            break;


        case UART_II_THR_EMPTY: // 发送缓存区空,可继续发送

            break;


        case UART_II_MODEM_CHG: // 只支持串口0


            break;


        default:

            break;

    }

}

真就什么都没改 - - 


你好,将这里的debug改成0。

image.png


您好,我试了下,还是不行


将你的代码拷贝并修改debug=0,可以进行收发。

image.png

9bed61629bd51d93652692f07900fea.jpg

你可以检查一下串口硬件是否接线良好,检查一下串口0的c文件是否include。

如果收发还是有问题,请发送邮件至邮箱lpc@wch.cn,我们这里进行查看。


只有登录才能回复,可以选择微信账号登录