求F767的片上FLASH写入的例子

2019-07-14 15:26发布

#define FLASH_USER (FLASH_BASE+0x00100000U)
void StartDefaultTask(void const * argument)
{

  /* USER CODE BEGIN 5 */
  uint32_t i = 0;
  uint32_t * pFlash_Data = (uint32_t *)FLASH_USER;
  /* Infinite loop */
  for(;;)
  {
        osDelay(5000);
        HAL_FLASH_Unlock();
        HAL_FLASH_Program(FLASH_PSIZE_WORD,FLASH_USER, (uint64_t)i++);
        HAL_FLASH_Lock();
        FLASH_WaitForLastOperation(100);
         
        printf("Hello world%d ",*pFlash_Data);
        HAL_GPIO_WritePin(GPIOB, LD1_GREEN_Pin, i&0x00000001);
        //HAL_UART_Transmit(&huart3, "a", 1, 0xFFFF);
  }
  /* USER CODE END 5 */
}
以上代码写入后读出测试失败,大侠给个例子吧。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
hnllyhsh
1楼-- · 2019-07-15 12:35
xiezhe272 发表于 2018-12-6 21:39
/* Includes ------------------------------------------------------------------*/
#include "IAP_IN_MCU.h"
#include <string.h>

谢谢答复。
IAP_IN_MCU.h是那个环境的?
我是用CUBEMX生成的工程。
hnllyhsh
2楼-- · 2019-07-15 13:04
youpukeji668 发表于 2018-12-6 21:27
官方例程里有flash操作。另外建议写flash操作测试代码时加上计数标志,防止持续写flash

给个下载地址吧,F1的我能搞定。F7的完全不同啊。
hnllyhsh
3楼-- · 2019-07-15 14:12
biao66 发表于 2018-12-6 21:09
flash用来存数据,选越小的扇区越好,擦除速度是问题,好像都是扇区擦除的

是这个理啊,可惜程序烧写占了前面的小块。
hnllyhsh
4楼-- · 2019-07-15 16:39
7762642422d 发表于 2018-12-6 21:56
赶紧走正道,下个STM32CubeF7,解压后在如下典型目录中即可找到你想要的:
ProjectsSTM32F769I_EVALExamplesFLASH

谢谢大侠提醒,看过说明后我死了用片山Flash存数据的心,还是外部加个QSPI的EEPROM吧,擦除一个bank才能写,看来只有IAP适合用。
youpukeji668
5楼-- · 2019-07-15 21:07
 精彩回答 2  元偷偷看……
biao66
6楼-- · 2019-07-16 02:25
hnllyhsh 发表于 2018-12-6 22:25
是这个理啊,可惜程序烧写占了前面的小块。

编译的时候地址偏移啊,第一个扇区用来跳转,跳过第二个扇区,第二个存数据呗

一周热门 更多>