打印
[STM32F4]

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

[复制链接]
3266|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 也是写失败,如果在创建任务之前写就没有问题,创建任务后就写失败,不知道您怎么解决的

使用特权

评论回复
5
redone| | 2021-8-26 14:18 | 只看该作者
感觉还是任务调度的事

使用特权

评论回复
6
andygirl| | 2021-8-26 14:44 | 只看该作者
uc没处理好

使用特权

评论回复
7
隐去| | 2021-8-27 13:58 | 只看该作者
加学习哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

564

帖子

1

粉丝