公司要我做stm8单片机的相关的技术研发,提出要求从用户代码不通过复位直接跳转到UBC(用户启动代码)模式下;在UBC模式下要跳转到用户代码是很简单的,几条语句就解决了,例如:
typedef @far void (*TFUNCTION)(void);
const TFUNCTION Main_ADDR = (TFUNCTION)0x9000ul;
_asm("JPF[_Main_ADDR]");
以上是官方UBC例程里的代码,很容易实现。但是要从9000地址开始的用户代码跳转回到UBC则是不行的,依然运行在用户代码,我在用户代码里设置是:
typedef @far void (*TFUNCTION)(void);
const TFUNCTION Main_ADDR = (TFUNCTION)0x8000ul;
_asm("JPF[_Main_ADDR]");
我觉得应该是中断向量和SP问题,求助各位大虾帮忙,提出意见和方法,要是能贴上代码那是求之不得了,跪求
此帖出自
小平头技术问答
一周热门 更多>