ch32v307vgt6基于FreeRTOS的例程跳转到BOOTLOADER求助

各位专家您好,我在使用ch32v307的时候知道,在程序之间可以通过软中断跳转到任意的执行位置,但是现在有个问题SW_Handler这个函数已经被freertos使用了,在这种情况下,我如何在freertos里面跳转到任意的位置执行呢?谢谢。

您好,跳转指令可以无需放在SW_Handler函数中,可以直接放在程序中进行跳转。注意启动文件中mstatus的值要改为0x7800,配置在机器模式下,如下图。

image.png



请教专家,如何跳转指定的位置,因为我有几个地址需要跳转;谢谢。

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);

}



您好,若是多个地址的话,可以参考一下下图程序这种写法试一下

image.png

或若想直接传参,可用下面这种

image.png


只有登录才能回复,可以选择微信账号登录