各位专家您好,我在使用ch32v307的时候知道,在程序之间可以通过软中断跳转到任意的执行位置,但是现在有个问题SW_Handler这个函数已经被freertos使用了,在这种情况下,我如何在freertos里面跳转到任意的位置执行呢?谢谢。
您好,跳转指令可以无需放在SW_Handler函数中,可以直接放在程序中进行跳转。注意启动文件中mstatus的值要改为0x7800,配置在机器模式下,如下图。
请教专家,如何跳转指定的位置,因为我有几个地址需要跳转;谢谢。
void jump_Handler(uint32_t v)
{
__asm("li a6, 0x10000");//如何把这一段程序里面的0X10000替换成变量v呢?
__asm("jr a6");
while(1);
}
您好,直接替换就可以了,后续有问题可以通过邮箱联系:kx@wch.cn
就是直接替换不会哈,如以下函数,直接替换,编译不能通过哈
void jump_Handler(uint32_t v)
{
//__asm("li a6, 0x10000");//如何把这一段程序里面的0X10000替换成变量v呢?
__asm("li a6, v");//该行程序编译不能通过
__asm("jr a6");
while(1);
}
您好,若是多个地址的话,可以参考一下下图程序这种写法试一下
或若想直接传参,可用下面这种