STC8G 串口2无法发送数据

[复制链接]
16136|11
 楼主| sdlo77 发表于 2021-9-21 21:40 | 显示全部楼层 |阅读模式
使用官方测试实例,串口2可以i接收数据,发送数据端口检测不到。程序如下:
/******************* IO配置函数 *******************/
void        GPIO_config(void)
{
        GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义

        GPIO_InitStructure.Pin  = GPIO_Pin_1;//GPIO_Pin_6 | GPIO_Pin_7;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //初始化
}

/***************  串口初始化函数 *****************/
void        UART_config(void)
{
        COMx_InitDefine                COMx_InitStructure;                                        //结构定义
        COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;                //模式,   UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
        COMx_InitStructure.UART_BaudRate  = 115200ul;//57600ul;                        //波特率,     110 ~ 115200
        COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允许,   ENABLE或DISABLE
        COMx_InitStructure.UART_Interrupt = ENABLE;                                //中断允许,   ENABLE或DISABLE
        COMx_InitStructure.UART_Priority    = Priority_0;                        //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
        COMx_InitStructure.UART_P_SW = UART2_SW_P10_P11;//UART2_SW_P46_P47;        //切换端口,   UART2_SW_P10_P11,UART2_SW_P46_P47
        UART_Configuration(UART2, &COMx_InitStructure);                //初始化串口2 UART1,UART2,UART3,UART4

        PrintString2("STC8 UART2 Test Programme!\r\n");        //UART2发送一个字符串
}

/**********************************************/
void main(void)
{
        u8        i;

        GPIO_config();
        UART_config();
        EA = 1;

        while (1)
        {
                delay_ms(1);
                if(COM2.RX_TimeOut > 0)                //超时计数
                {
                        if(--COM2.RX_TimeOut == 0)
                        {
                                if(COM2.RX_Cnt > 0)
                                {
                                        for(i=0; i<COM2.RX_Cnt; i++)        TX2_write2buff(RX2_Buffer[i]);        //收到的数据原样返回
                                }
                                COM2.RX_Cnt = 0;
                        }
                }
        }
}


 楼主| sdlo77 发表于 2021-9-21 21:42 | 显示全部楼层

STC8G 串口2无法发送数据

UART1正常,UART2、3、4都不正常。
gx_huang 发表于 2021-9-22 08:29 | 显示全部楼层
看不懂,我只会直接初始化寄存器,不知道这些接口啥意思。
UART1和UART2-4的差别,UART1有些寄存器可以位寻址,UART2-4不可以。
henangongda123 发表于 2021-9-22 09:02 | 显示全部楼层
我上次遇到的是引脚初始化问题,要把对应端口设置成双向IO
 楼主| sdlo77 发表于 2021-9-22 09:25 来自手机 | 显示全部楼层
端口设置成双向,推挽,开漏都试过了还是不行,不知道芯片还有其他设置的没?
dcxq13 发表于 2021-9-22 09:55 | 显示全部楼层
用官方的烧录软件试下,里面有例程和串口配置代码生成工具
 楼主| sdlo77 发表于 2021-9-22 10:03 来自手机 | 显示全部楼层
dcxq13 发表于 2021-9-22 09:55
用官方的烧录软件试下,里面有例程和串口配置代码生成工具

我用的是官方库实例测试的
coody 发表于 2021-9-22 11:33 | 显示全部楼层
先确定你的MCU有串口2,然后,可以直接下载官方例程的HEX文件测试。STC的串口一般可以切换不同的IO,你要注意例程选择的IO。
linxi6414 发表于 2021-9-22 16:32 | 显示全部楼层
本帖最后由 linxi6414 于 2021-9-22 16:33 编辑



除了修改寄存器外,还要将TXD引脚修改为强推挽模式。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| sdlo77 发表于 2021-9-22 22:29 来自手机 | 显示全部楼层
谢谢大家,问题解决了,是电源引起的芯片复位问题。
海洋无限 发表于 2021-9-24 14:46 | 显示全部楼层

STC8G 串口2无法发送数据

双串口就有串口引起的复位? 单串口没有吗
lxq666 发表于 2022-8-13 17:49 | 显示全部楼层
sdlo77 发表于 2021-9-22 22:29
谢谢大家,问题解决了,是电源引起的芯片复位问题。

请问楼主这个问题怎么解决呢,我单独使用串口2也是一直复位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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