久芯网

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

avatar yklkadlfk7898 提问时间: 2023-08-20 20:48:46 / 未解决
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函数里。请问有谁知道还需要怎么配置?

如需获得 stm32f405 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

4个回答
  • avatar yklkadlfk7898
    回答时间: 2023-08-20 21:16:47

    0x8000000地址是跳转测试程序入口 0x8030000地址是需要跳转到执行地方入口

  • avatar yklkadlfk7898
    回答时间: 2023-08-20 21:47:44

    跟踪后发现卡死在OSStartHighRdy函数里出不来

  • avatar 废鱼
    回答时间: 2023-08-20 22:18:30

    楼主看一下systicks中断是否正常,还有ucos需要的两个任务切换的中断。

  • avatar yklkadlfk7898
    回答时间: 2023-08-20 22:50:22

    解决了,谢谢

会员中心 微信客服
客服
回到顶部