标题:
STC8G1K08-SOP16单片机串口1通讯正常,串口2死活不出信号
[打印本页]
作者:
JJJ2u
时间:
2023-12-12 00:33
标题:
STC8G1K08-SOP16单片机串口1通讯正常,串口2死活不出信号
新手求助!使用STC8系列MCU,串口1 通讯正常!串口2死活不出信号,求助!
#include "stc8g.h"
#include "intrins.h"
#include "stdio.h"
void Uart2_Isr(void) interrupt 8
{
if (S2CON & 0x02) //检测串口2发送中断
{
S2CON &= ~0x02; //清除串口2发送中断请求位
}
if (S2CON & 0x01) //检测串口2接收中断
{
S2CON &= ~0x01; //清除串口2接收中断请求位
}
}
void Uart2_Init(void) //115200bps@22.1184MHz
{
S2CON = 0x50; //8位数据,可变波特率
AUXR &= 0xFB; //定时器时钟12T模式
T2L = 0xFC; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
IE2 |= 0x01; //使能串口2中断
}
void main()
{
Uart2_Init();
ES = 1;
EA = 1;
while(1){
printf("Uart Test !\r\n");
}
}
复制代码
作者:
CQQ@123
时间:
2023-12-12 09:11
串口使能位为ES2
作者:
STC新未来
时间:
2023-12-12 09:28
printf函数默认通过串口1输出,如果想通过串口2输出,需要改写putchar函数:
char putchar(char c)
{
S2BUF = c;
while((S2CON & 2) == 0);
S2CON &= ~2; //Clear Tx flag
return c;
}用上面写法需要将串口2中断关闭,或者删除中断函数里清除发送中断标志指令。
若楼主还有疑问可去STCAI官方咨询
作者:
老夫任我行
时间:
2023-12-12 09:44
寄存器有没有弄错?串口2的数据寄存器是S2BUF哦。另外配置串口2一般用S2CON=0x10
作者:
JJJ2u
时间:
2023-12-12 10:54
老夫任我行 发表于 2023-12-12 09:44
寄存器有没有弄错?串口2的数据寄存器是S2BUF哦。另外配置串口2一般用S2CON=0x10
官方给出的示例寄存器是S2BUF哦!S2CON=0X50和0x10都试过了
作者:
coody_sz
时间:
2023-12-12 11:30
不可以直接下载STC ISP返利程序里的例子测试吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1