各位專家您好,我在使用ch32v307的時候知道,在程序之間可以通過軟中斷跳轉(zhuǎn)到任意的執(zhí)行位置,但是現(xiàn)在有個問題SW_Handler這個函數(shù)已經(jīng)被freertos使用了,在這種情況下,我如何在freertos里面跳轉(zhuǎn)到任意的位置執(zhí)行呢?謝謝。
您好,跳轉(zhuǎn)指令可以無需放在SW_Handler函數(shù)中,可以直接放在程序中進(jìn)行跳轉(zhuǎn)。注意啟動文件中mstatus的值要改為0x7800,配置在機(jī)器模式下,如下圖。
請教專家,如何跳轉(zhuǎn)指定的位置,因?yàn)槲矣袔讉€地址需要跳轉(zhuǎn);謝謝。
void jump_Handler(uint32_t? v)
{
? ??
? ? __asm("li? a6, 0x10000");//如何把這一段程序里面的0X10000替換成變量v呢?
? ? __asm("jr? a6");
? ? while(1);
}
您好,直接替換就可以了,后續(xù)有問題可以通過郵箱聯(lián)系:kx@wch.cn
就是直接替換不會哈,如以下函數(shù),直接替換,編譯不能通過哈
void jump_Handler(uint32_t? v)
{
? ??
? ? //__asm("li? a6, 0x10000");//如何把這一段程序里面的0X10000替換成變量v呢?
__asm("li? a6, v");//該行程序編譯不能通過
? ? __asm("jr? a6");
? ? while(1);
}
您好,若是多個地址的話,可以參考一下下圖程序這種寫法試一下
或若想直接傳參,可用下面這種