STC1KH08通信时不断复位为哪般?
如题,串口通信2400波特率,只是控制LED灯珠亮灭,通信过程中就不断自动复位是不是指针乱了 ayb_ice 发表于 2021-1-15 11:00
是不是指针乱了
好像不是,去掉通信部分程序,不会复位
只接收不发送数据,不复位;
接收,且发送数据少于8个时,不复位;
接收,且发送数据大于8个时,复位;
void send_frame_data1(u8 cmd,u8 gy_gz,u8 led_stat) //发送一帧数据
{
u8 i;
if(cmd==3)
{
TX1_Buffer=dj_id>>8;
TX1_Buffer=dj_id&0xff;
TX1_Buffer= 3;
TX1_Buffer= 4;
TX1_Buffer=gy_gz;
TX1_Buffer=dj_style;
TX1_Buffer=0;
TX1_Buffer=led_stat;
jisuan_crc=Calculate_CRC(TX1_Buffer,8); // 计算CRC16结果
TX1_Buffer=(jisuan_crc)>>8; // 00 01 03 04 00 04 00 00 10 00
TX1_Buffer= jisuan_crc&0xff; // 00 01 03 04 00 04 00 00 1f 10
for(i=0;i<8;i++)
{ //8不会
Uart_SendByte(TX1_Buffer); //9开始出现复位
}
}
} cainiao518 发表于 2021-1-15 16:41
好像不是,去掉通信部分程序,不会复位
只接收不发送数据,不复位;
接收,且发送数据少于8个时,不复位 ...
TX1_Buffer分配空间不够吧 ayb_ice 发表于 2021-1-15 16:43
TX1_Buffer分配空间不够吧
有12字节空间,实际只用了10个 void Uart_SendByte(uchar dat)
{
ES=0;
SBUF = dat;
while(TI==0);
TI=0;
ES=1;
} cainiao518 发表于 2021-1-15 16:52
不用关ES,
可能是接收的问题 ayb_ice 发表于 2021-1-15 17:30
不用关ES,
可能是接收的问题
中断接收程序:
void Uart_Int(void) interrupt 4
{
// static u8led_stat=0;
if(1==RI)
{
RI = 0;
RX1_Buffer = SBUF;
RX1_Cnt++;
if(RX1_Cnt >= UART1_BUF_LENGTH)
{
RX1_Cnt = 0; //防溢出
}
flag_rx_star=1; //接收开始
rx_tim_count=0; //
}
if(1==TI)
{
TI = 0;
B_TX1_Busy = 0;
}
} LZ带的灯珠是多大功率的?3V3的电源来自哪里?STC的还不至于这么脆弱 把中断里 if(1==ti) 这部分去了 90houyidai 发表于 2021-1-15 22:17
LZ带的灯珠是多大功率的?3V3的电源来自哪里?STC的还不至于这么脆弱
3.3V来自上面的那个芯片,LED也是由那个芯片驱动 ayb_ice 发表于 2021-1-18 08:46
去掉这部分代码
if(1==TI)
{
void Uart_Int(void) interrupt 4 //串口中断
{
if(1==RI)
{
RI = 0;
RX1_Buffer = SBUF;
RX1_Cnt++;
if(RX1_Cnt >= UART1_BUF_LENGTH)
{
RX1_Cnt = 0; //防溢出
}
flag_rx_star=1; //接收开始
rx_tim_count=0; //
}
// if(1==TI)
// {
// TI = 0;
// B_TX1_Busy = 0;
// }
}
void Uart_SendByte(uchar dat)//串口发送
{
SBUF = dat;
while(TI==0);
TI=0;
}
还是不行 cainiao518 发表于 2021-1-18 10:42
还是不行
说明你代码可能其它地方还有问题 cainiao518 发表于 2021-1-18 10:42
还是不行
这样改试下
bit bSendOk;
if(1==TI)
{
TI = 0;
bSendOk = 1;
}
}
void Uart_SendByte(uchar dat)//串口发送
{
SBUF = dat;
while(!bSendOk);
bSendOk=0;
} ayb_ice 发表于 2021-1-18 11:38
这样改试下
bit bSendOk;
还是不行 cainiao518 发表于 2021-1-18 15:38
还是不行
狗有没有打开呢 ayb_ice 发表于 2021-1-18 15:53
狗有没有打开呢
没 cainiao518 发表于 2021-1-18 16:40
没
上全部代码吧,最好上工程文件 ayb_ice 发表于 2021-1-18 16:43
上全部代码吧,最好上工程文件
附件 cainiao518 发表于 2021-1-18 16:49
附件
应该是这个函数有问题
Calculate_CRC
先屏蔽这个函数再试
发送还是按我之前的做法搞
页:
[1]
2