华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 85|回复: 1

SWM341 SDRAM 通过BOOT切换程序后无法退出的一种解决方案

[复制链接]

4

主题

13

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2024-4-10 10:25:01 | 显示全部楼层 |阅读模式


BOOT程序与APP程序均有使用SDRAM时出现此情况,切换后在库文件:SWM341_sdram.c里,
while(SDRAMC->CR & SDRAMC_CR_PWRON_Msk) __NOP();  一直停留在__NOP()里无法退出

尝试提前调用SWM341_SDRAM_Disable()后,仿真无法连接了

尝试通过开关时钟方案解决了此问题,具体程序更改为:
在 “while(SDRAMC->CR & SDRAMC_CR_PWRON_Msk) __NOP(); ”段开始,改为以下述代码:

  //等待初始完成->boot切换重新调用时将一直自旋
  //while(SDRAMC->CR & SDRAMC_CR_PWRON_Msk) __NOP();       
  int i = 1000;
        for(; i > 0; i--){
    __NOP();
    if(!(SDRAMC->CR & SDRAMC_CR_PWRON_Msk)) return;
  }
  //boot切换自旋后处理:  重新开关时钟解决
  SYS->CLKEN1 &= ~(1 << SYS_CLKEN1_SDRAM_Pos);
        for(int i = 0; i < 100; i++) __NOP();
  SYS->CLKEN1 |= (1 << SYS_CLKEN1_SDRAM_Pos);



回复

使用道具 举报

4

主题

13

帖子

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2024-4-10 11:03:42 | 显示全部楼层



1712718103810.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2024-5-20 17:22 , Processed in 0.034000 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表