串口2不能通信,设置如下
本帖最后由 木生 于 2024-10-21 09:45 编辑void SetTimer2Baudraye(u16 dat)// 使用Timer2做波特率.
{
AUXR &= ~(1<<4); //Timer stop T2R=0
AUXR &= ~(1<<3); //Timer2 set As Timer
AUXR |=(1<<2); //Timer2 set as 1T mode T2X12=1
T2H = dat / 256;
T2L = dat % 256;
IE2&= ~(1<<2); //禁止中断
AUXR |=(1<<4); //Timer run enable
}
// 串口初始化函数(需要根据实际情况编写)
void SerialInit() {
// 设置串口参数,如波特率、数据位、停止位等
SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate2);
S2CON &= ~(1<<7); // 8位数据, 1位起始位, 1位停止位, 无校验
IE2 |= 1; //允许中断
S2CON |= (1<<4); //允许接收
P_SW2 &= ~0x01;
P_SW2 |=0; //UART2 switch to: 0: P1.0 P1.1,1: P4.6 P4.7
}
你先用AIapp-ISP软件生成的串口初始化代码吧,你这个代码关联了其它一些定义,说不好哪里的问题。 看着没有什么问题,其它代码也放上来看下
串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)
lezjin 发表于 2024-10-23 19:14
看着没有什么问题,其它代码也放上来看下
感谢回复,感觉代码没有问题。就是例程中的https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11348&extra=page%3D1
页:
[1]