打印

STC8G 串口2无法发送数据

[复制链接]
15030|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

使用特权

评论回复
5
sdlo77|  楼主 | 2021-9-22 09:25 | 只看该作者
端口设置成双向,推挽,开漏都试过了还是不行,不知道芯片还有其他设置的没?

使用特权

评论回复
6
dcxq13| | 2021-9-22 09:55 | 只看该作者
用官方的烧录软件试下,里面有例程和串口配置代码生成工具

使用特权

评论回复
7
sdlo77|  楼主 | 2021-9-22 10:03 | 只看该作者
dcxq13 发表于 2021-9-22 09:55
用官方的烧录软件试下,里面有例程和串口配置代码生成工具

我用的是官方库实例测试的

使用特权

评论回复
8
coody| | 2021-9-22 11:33 | 只看该作者
先确定你的MCU有串口2,然后,可以直接下载官方例程的HEX文件测试。STC的串口一般可以切换不同的IO,你要注意例程选择的IO。

使用特权

评论回复
9
linxi6414| | 2021-9-22 16:32 | 只看该作者
本帖最后由 linxi6414 于 2021-9-22 16:33 编辑



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


使用特权

评论回复
10
sdlo77|  楼主 | 2021-9-22 22:29 | 只看该作者
谢谢大家,问题解决了,是电源引起的芯片复位问题。

使用特权

评论回复
11
海洋无限| | 2021-9-24 14:46 | 只看该作者

STC8G 串口2无法发送数据

双串口就有串口引起的复位? 单串口没有吗

使用特权

评论回复
12
lxq666| | 2022-8-13 17:49 | 只看该作者
sdlo77 发表于 2021-9-22 22:29
谢谢大家,问题解决了,是电源引起的芯片复位问题。

请问楼主这个问题怎么解决呢,我单独使用串口2也是一直复位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝