jindizhiwa 发表于 2023-4-14 11:42:29

STC8G1K17的串口2

用STC8G系列-串口相关程序里解压的02-串口2中断收发-C语言,hex文件烧录到STC8G1K17里,没看到正常数据收发,串口在疯狂发送FE;发送的数据回显也不对。
源码在STC8G1K08里仿真,看到的现象与预期一致

乘风飞扬 发表于 2023-4-14 13:48:13

程序开始位置进行相关的IO口初始化:
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口


梁工 发表于 2023-4-14 13:48:17

下载你的附件,直接测试HEX,没有问题,你检查一下你的硬件,有问题了。




梁工 发表于 2023-4-14 13:50:20

乘风飞扬 发表于 2023-4-14 13:48
程序开始位置进行相关的IO口初始化:

初始化时有设置IO的,实测没有任何问题。
void        UART2_config(u32 brt, u8 timer, u8 io)        // brt: 通信波特率,timer=2: 波特率使用定时器2, 其它值: 使用Timer2做波特率. io=0: 串口2切换到P1.0 P1.1, =1: 切换到P4.6 P4.7.
{
        brt = 65536UL - (MAIN_Fosc / 4) / brt;
        if(timer == 2)        SetTimer2Baudraye((u16)brt);        //波特率使用定时器2
        else                        SetTimer2Baudraye((u16)brt);        //波特率使用定时器2                两个条件都使用Timer2, 是为了跟另外串口函数兼容

        S2CON &= ~(1<<7);        // 8位数据, 1位起始位, 1位停止位, 无校验
        IE2   |= 1;                        //允许中断
        S2CON |= (1<<4);        //允许接收
        if(io == 1)        {        P_SW2 |=1;        P4n_standard(0xc0);}        //切换到 P4.6 P4.7
        else                {        P_SW2 &= ~1;        P1n_standard(0x03);}        //切换到 P1.0 P1.1
}

乘风飞扬 发表于 2023-4-14 13:59:13

梁工 发表于 2023-4-14 13:50
初始化时有设置IO的,实测没有任何问题。
void        UART2_config(u32 brt, u8 timer, u8 io)        // brt: 通信波 ...

没注意到是在串口设置里面进行的IO口初始化,我在程序起始位置加上IO口初始化后烧录测试收发正常。

梁工 发表于 2023-4-14 15:30:07

乘风飞扬 发表于 2023-4-14 13:59
没注意到是在串口设置里面进行的IO口初始化,我在程序起始位置加上IO口初始化后烧录测试收发正常。 ...

这程序是我提供的,给过无数的用户,我刚才再次直接下载楼主附件的HEX测试都是正常的。所以,严重怀疑楼主的硬件有问题。
页: [1]
查看完整版本: STC8G1K17的串口2