[STM32F4] F4+UCOS-II,调用读写FLASH函数,系统没放映

[复制链接]
 楼主| hxb20122012 发表于 2017-1-11 19:48 | 显示全部楼层 |阅读模式
本帖最后由 hxb20122012 于 2017-1-16 16:46 编辑

大家好,我使用F4+UCOS操作系统,硬件上有NOR FLASH。当我创建一个任务,调用读写NOR FLASH函数的时候,硬件就死了(1)操作NOR FLASH部分
NOR_WRITE(ADDR_SHIFT(0x0555), 0x00AA);
        NOR_WRITE(ADDR_SHIFT(0x02AA), 0x0055);
        NOR_WRITE(ADDR_SHIFT(0x0555), 0x0080);
        NOR_WRITE(ADDR_SHIFT(0x0555), 0x00AA);
        NOR_WRITE(ADDR_SHIFT(0x02AA), 0x0055);
        NOR_WRITE((NOR_FLASH_ADDR + _uiBlockAddr), 0x50);  //SST39VF3201B 50H

        return (NOR_GetStatus(BlockErase_Timeout));

(2)死机
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

 楼主| hxb20122012 发表于 2017-1-11 20:05 | 显示全部楼层
程序运行到这里就死了,直接操作FLASH,总线的时候,就死了。
uint8_t NOR_EraseSector(uint32_t _uiBlockAddr)
{
        NOR_WRITE(ADDR_SHIFT(0x0555), 0x00AA);
        NOR_WRITE(ADDR_SHIFT(0x02AA), 0x0055);
        NOR_WRITE(ADDR_SHIFT(0x0555), 0x0080);
        NOR_WRITE(ADDR_SHIFT(0x0555), 0x00AA);
        NOR_WRITE(ADDR_SHIFT(0x02AA), 0x0055);
        NOR_WRITE((NOR_FLASH_ADDR + _uiBlockAddr), 0x50);  //SST39VF3201B 50H

        return (NOR_GetStatus(BlockErase_Timeout));
}
ticomi 发表于 2017-1-12 08:38 | 显示全部楼层
擦除Flash时一般需要先解锁操作,你看下是不是忘却了这个步骤?
lixiaoxu186 发表于 2021-8-18 16:51 | 显示全部楼层
您好 我最近也是使用 F4  UCOS  +内部flash 也是写失败,如果在创建任务之前写就没有问题,创建任务后就写失败,不知道您怎么解决的
redone 发表于 2021-8-26 14:18 | 显示全部楼层
感觉还是任务调度的事
andygirl 发表于 2021-8-26 14:44 | 显示全部楼层
uc没处理好
隐去 发表于 2021-8-27 13:58 | 显示全部楼层
加学习哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

564

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

74

主题

564

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部