0

我正在尝试将文件(.hex 文件)从我的计算机发送到微控制器的内部闪存。暂时我正在使用 Hercules 终端发送文件。我的 UART 响应发送的数据。

我的内部闪存扇区是 128Kbytes,我的文件大约是 50Kbytes,所以空间不是问题。

在将 .hex 文件发送到文件中的某个点时,数据会被传输,但过了一会儿它会停止。我不明白为什么。

为了减慢速度,我尝试了 UART 波特率从 115200 到 2400。

下面是代码:

while(1) 
    {
        i = 0;
        int c;
        char str[256];
        printf("\n> ");
        do
        {
            c = fgetc(stdin);
            if(c=='\n')
                break;

            if(c!=-1)
            {
                str[i++] = c;
                delay(10);
            }

        }while(1);
        //str[i]='\0';
        //printf("Got..%s\n",str);
        int j = 0;
        while(j < i-1)
        {
        uint64_t data;
        uint64_t *pData = (uint64_t*)(str + j); //

        //data = *((uint64_t*)&str[i]);
        //++pData;
        data = *pData;

        if (HAL_FLASH_Program(TYPEPROGRAM_BYTE, start_address, data) != HAL_OK) {
                HAL_FLASH_Lock();
                }else
                {
                    //printf("\nSuccess: Writing a byte at (%x) ==> %c ",start_address,*((char*)&data));
                }
                delay(10);
        //data++;
                start_address=start_address+1;  
                j++;
            }
}

下面我附上我的 Hercules 终端图像:

4

0 回答 0