STC8G1K17的串口2
用STC8G系列-串口相关程序里解压的02-串口2中断收发-C语言,hex文件烧录到STC8G1K17里,没看到正常数据收发,串口在疯狂发送FE;发送的数据回显也不对。源码在STC8G1K08里仿真,看到的现象与预期一致
程序开始位置进行相关的IO口初始化:
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
下载你的附件,直接测试HEX,没有问题,你检查一下你的硬件,有问题了。
乘风飞扬 发表于 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:50
初始化时有设置IO的,实测没有任何问题。
void UART2_config(u32 brt, u8 timer, u8 io) // brt: 通信波 ...
没注意到是在串口设置里面进行的IO口初始化,我在程序起始位置加上IO口初始化后烧录测试收发正常。 乘风飞扬 发表于 2023-4-14 13:59
没注意到是在串口设置里面进行的IO口初始化,我在程序起始位置加上IO口初始化后烧录测试收发正常。 ...
这程序是我提供的,给过无数的用户,我刚才再次直接下载楼主附件的HEX测试都是正常的。所以,严重怀疑楼主的硬件有问题。
页:
[1]