我正在尝试将文件(.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终端图片: