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

stm32f405 ucoslll 跳转后可以进入主程序,但是卡死在OSTaskCreate函数里,任务无法运行

[复制链接]
yklkadlfk7898 提问时间:2021-10-25 18:17 / 未解决
stm32f405 ucoslll 跳转后可以进入主程序,但是卡死在OSTaskCreate函数里,任务无法运行。
void JumpToApp(void)
{
        uint32_t i=0;
        USART_Cmd(UART4, DISABLE);

        __set_PRIMASK(1);        /* 禁止全局中断 */
       
        /* 关闭滴答定时器,复位到默认值 */
    SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;
       
         /* 关闭所有中断,清除所有中断挂起标志 */
        for (i = 0; i < 8; i++)
        {
                        NVIC->ICER[i] = 0xFFFFFFFF;
                        NVIC->ICPR[i] = 0xFFFFFFFF;
        }
    __set_PRIMASK(0);        /* 使能全局中断 */       
       

        SCB->VTOR=FLASH_BASE|0x30000;
        ApplicationAddress = APP_ADDRESS;
        //printf("JumpToApp = 0x%x\r\n",(*(vu32*)ApplicationAddress));
        //printf("JumpToApp = 0x%x\r\n",((*(vu32*)ApplicationAddress) & 0x2FFE0000 ));
        if (((*(vu32*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
        {
                /* Jump to user application */
                m_JumpAddress = *(vu32*) (ApplicationAddress + 4);
                JumpToApplication = (FunVoidType) m_JumpAddress;
                //printf("m_JumpAddress = 0x%x\r\n",m_JumpAddress);

                /* Initialize user application's Stack Pointer */
                __set_MSP(*(vu32*) ApplicationAddress);
                JumpToApplication();
        }
}


我用的是uart4打印串口日志,所以先禁止USART_Cmd(UART4, DISABLE),测试程序没有其他什么中断设置。但是调用JumpToApp函数后可以进入main函数,但是卡死在OSTaskCreate函数里。请问有谁知道还需要怎么配置?
收藏 评论4 发布时间:2021-10-25 18:17

举报

4个回答
yklkadlfk7898 回答时间:2021-10-25 18:19:28
0x8000000地址是跳转测试程序入口

0x8030000地址是需要跳转到执行地方入口
yklkadlfk7898 回答时间:2021-10-26 10:58:19
跟踪后发现卡死在OSStartHighRdy函数里出不来
废鱼 回答时间:2021-10-26 14:09:39
楼主看一下systicks中断是否正常,还有ucos需要的两个任务切换的中断。
yklkadlfk7898 回答时间:2021-10-26 15:43:34
解决了,谢谢
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版