xxm 发表于 2023-8-30 15:38:54

第三方mcu给stc8g1k17a进行ISP下载



如图,问题出现在第三步,准备阶段,收到的数据是00 00 所以超时退出了,请教一下有遇到同样问题的吗?如何解决?

乘风飞扬 发表于 2023-8-31 10:52:03

超时计数器 TimeOut 是在1ms中断里面递减,100ms才减1:

//1ms定时器中断服务程序
void tm0(void) interrupt 1
{
    static BYTE Counter100;
   
    f1ms = TRUE;
    if (Counter100-- == 0)
    {
      Counter100 = 100;
      if (TimeOut) TimeOut--;
    }
}
而在发送命令函数 CommSend 后面会进行串口通信参数初始化,TimeOut =20 也就是说2秒钟才会超时:
//串口通讯初始化
void CommInit(void)
{
    UartRecvStep = 0;
    TimeOut = 20;
    UartReceived = FALSE;
}就算接收了2个00也不至于要用2秒钟,你对照一下例程,是不是哪里没有设置好,或者被你修改了。

xxm 发表于 2023-8-31 13:05:11

乘风飞扬 发表于 2023-8-31 10:52
超时计数器 TimeOut 是在1ms中断里面递减,100ms才减1:

而在发送命令函数 CommSend 后面会进行串口通信参 ...

是我表述有问题,CommSend 发送数据没问题,但接收到的数据不对,发送完,接着接收到2个数据00,TimeOUT=0后,才超时退出

乘风飞扬 发表于 2023-8-31 15:51:18

xxm 发表于 2023-8-31 13:05
是我表述有问题,CommSend 发送数据没问题,但接收到的数据不对,发送完,接着接收到2个数据00,TimeOUT= ...

准备时有进行波特率调整吗?
    //准备
    TH1 = HIBYTE(BR(MAXBAUD));
    TL1 = LOBYTE(BR(MAXBAUD));

xxm 发表于 2023-8-31 16:05:35

乘风飞扬 发表于 2023-8-31 15:51
准备时有进行波特率调整吗?

调整波特率试过了,也不行

郭耀宗 发表于 2025-2-17 14:11:49

请教一下,楼主解决了吗,我也遇到了相似的问题,发送准备命令后单片机无回复,超时后退出

神农鼎 发表于 2025-2-17 14:18:30











Alex_WJX 发表于 2025-10-7 23:40:16

应该是设置的ISP工作频率不对,
用芯片在电脑的ISP软件上检测下 “检测选项”
之后会给出系统ISP工作频率: 23.844MHz
之后在范例程序中改下:
#define                FUSER                24000000L                                //STC8H 系列目标芯片工作频率
#define                RL(n)                (65536-(FUSER/(n)+2)/4)        //STC8H 系列目标芯片串口波特率计算公式
就可以了,这个也困扰我一天,改了之后就解决了
页: [1]
查看完整版本: 第三方mcu给stc8g1k17a进行ISP下载