Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C stm32f2xx HAL_闪存_程序返回无意义_C_Stm32_Flash Memory - Fatal编程技术网

C stm32f2xx HAL_闪存_程序返回无意义

C stm32f2xx HAL_闪存_程序返回无意义,c,stm32,flash-memory,C,Stm32,Flash Memory,我正在尝试写入flash,但返回错误不在可接受的范围内 例如: uint32_t Address = 0x0800C000; uint8_t Data = 0x01; HAL_FLASH_Unlock(); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); FLASH_

我正在尝试写入flash,但返回错误不在可接受的范围内

例如:

uint32_t Address = 0x0800C000;
uint8_t Data = 0x01;

HAL_FLASH_Unlock();
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
FLASH_Erase_Sector(FLASH_SECTOR_3, VOLTAGE_RANGE_3); //sector3 0x800C000 0x800CFFF
printf("---%u\n", HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data));

if ( HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data)==HAL_OK       ) printf("---%u\n", 0);
if ( HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data)==HAL_ERROR    ) printf("---%u\n", 1);
if ( HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data)==HAL_BUSY     ) printf("---%u\n", 2);
if ( HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data)==HAL_TIMEOUT  ) printf("---%u\n", 3);
if ( HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, Data) > 0x03)  printf("---none\n");

HAL_FLASH_Lock();
请原谅这段草率的代码,但它是用于测试的。我总是得到大于3的回报。如果追踪到它是1073888268,但结构显示

typedef enum 
{
  HAL_OK       = 0x00,
  HAL_ERROR    = 0x01,
  HAL_BUSY     = 0x02,
  HAL_TIMEOUT  = 0x03
} HHAL_StatusTypeDef;

这是怎么回事?

您使用的是哪种微控制器?你为什么要清除所有的旗帜?您的程序的大小是多少?stm32f205,我正在根据我看到的示例清除标志。我当前的程序大小为0x08000000到0x08083dfre重复这可能对我们来说很难。我建议它通过进入函数并查看哪一步失败以及失败原因来调试它:变量值无效,检查一些寄存器标志。如果是第二个,应该给你更多关于为什么会发生这种情况的信息。这些HAL_FLASH_程序功能是不可步进的。试图介入,只是让它跨过函数。也许这是我的问题?好吧,KEIL IDE需要添加设备->闪存。之后它就可以工作了。你用的是哪个微控制器?你为什么要清除所有的旗帜?您的程序的大小是多少?stm32f205,我正在根据我看到的示例清除标志。我当前的程序大小为0x08000000到0x08083dfre重复这可能对我们来说很难。我建议它通过进入函数并查看哪一步失败以及失败原因来调试它:变量值无效,检查一些寄存器标志。如果是第二个,应该给你更多关于为什么会发生这种情况的信息。这些HAL_FLASH_程序功能是不可步进的。试图介入,只是让它跨过函数。也许这是我的问题?好吧,KEIL IDE需要添加设备->闪存。在那之后它就开始工作了。