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

求高手解救: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版