问答

汇集网友智慧,解决技术难题

阳光的zj

TA的家园币:108  

  • kf32 单片机 bootloader 代码疑问

    if(*(volatileuint32_t*)0x8000==0x10018000)//判断APP空间的首个字内容是否为栈顶地址0x10018000,正确则说明APP程序已经写入{SYS_VECTOFF=0x8000;//设置向量表偏移值,即重映射向量表,这对中断服务函数正确执行至关重要JumpAddress=*(volatileuint32_t*)(0x8000+4);//获取APP的startup()入口地址Jump_To_Application=(pFunction)JumpAddress;//将startup()入口地址赋值给函数指针Jump_To_Application();//使用新的函数指针,转向执行APP的startup()函数,这将导致APP程序启动}这段代码不明白,能否详细讲解一下,谢谢if(*(volatileuint32_t*)0x8000==0x10018000)如果将0x8000修改为0x1b000SYS_VECTOFF=0x8000;//设置向量表偏移值,即重映射向量表,这对中断服务函数正确执行至关重要JumpAddress=*(volatileuint32_t*)(0x8000+4);//获取APP的startup()入口地址这两处0x8000是否也需要修改为0x1b000用官方给的代码ox8000是可以跑通的,但现在修改之后不能跑通,不知道哪里出问题啦。