0

コンピュータからマイクロコントローラの内部フラッシュにファイル (.hex ファイル) を送信しようとしています。当分の間、Hercules端末を使用してファイルを送信しています。私のUARTは送信されたデータに応答します。

内部フラッシュ メモリ セクタは 128K バイトで、ファイルは約 50K バイトなので、スペースは問題になりません。

ファイルの特定のポイントまで .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