你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求高手解救:app跳转到boot后can无法通信

[复制链接]
lanmanck 提问时间:2013-12-17 09:52 /
各位:
用的是f103,结构为boot+app。
现在由于升级时要保持io电平,所以从app跳到boot,而不是重启。
跳转时我对每个模块都重新复位然后时钟禁止了,但是跳到boot后can不能用!因为flash有保存标志,重启后进入boot就没问题,所以跳转前还需要做哪些事情?如下是复位外设代码:
 
/* 把所有外设复位,先使能时钟,不然不能进行外设复位.
     */
    RCC->APB1ENR = 0x3FFFFFFF;
    RCC->APB2ENR = 0x3FFFFF;
    RCC->AHBENR = 0x5F;

    /* 然后复位. */
    jump_addr = 0x3FFFFFFF;
    RCC->APB1RSTR |= jump_addr;
    RCC->APB1RSTR &= ~jump_addr;

    /* 如果从app跳入boot,则IO PB7不能复位. */
    jump_addr = 0x3FFFFF;
    if(addr==FLASH_BASE){
        jump_addr &= ~RCC_APB2Periph_GPIOB;
    }
    RCC->APB2RSTR |= jump_addr;
    RCC->APB2RSTR &= ~jump_addr;

#ifdef STM32F10X_CL
    jump_addr = RCC_AHBPeriph_OTG_FS|RCC_AHBPeriph_ETH_MAC;
    RCC->AHBRSTR |= jump_addr;
    RCC->AHBRSTR &= ~jump_addr;
#endif

    /* 最后,时钟全部停掉. */
    jump_addr = 0x3FFFFFFF;
    RCC->APB1ENR &= ~jump_addr;

    jump_addr = 0x3FFFFF;
    if(addr==FLASH_BASE){
        jump_addr &= ~RCC_APB2Periph_GPIOB;
    }
    RCC->APB2ENR &= ~jump_addr;
    RCC->AHBENR &= ~0x5F;
收藏 评论3 发布时间:2013-12-17 09:52

举报

3个回答
回答时间:2013-12-17 14:56:58

RE:求高手解救:app跳转到boot后can无法通信

跳到APP以前把CAN关闭了。回复的默认状态,进入APP重新初始化CAN。
wkuang 回答时间:2013-12-18 21:57:41

RE:求高手解救:app跳转到boot后can无法通信

没有更好的方法,只能在升级前保存原始状态, 升级后恢复。  要想在升级过程中业务还不中断,我觉得几乎不可能。
需求是要求升级过程业务不中断吗??  业务不中断其业务可靠吗??
Hiker 回答时间:2013-12-19 16:17:07

回复:求高手解救:app跳转到boot后can无法通信

在APP中,先去CAN 关闭~, 并且DEINIT

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版