請問在做IAP時,為什么 SW_handler() 沒有被調(diào)用?


以下代碼是在通過MSR工具生成默認(rèn)工程后添加進(jìn)加去的,沒有改動其它內(nèi)容。

在CH32V307RCT6 和 CH32V203C8T6 兩個芯片下試驗(yàn)。

在main.c中:

? ??//進(jìn)User1區(qū)跳轉(zhuǎn)到 0x5000;

? ??printf("Jump to APP\r\n");? -- 已打印

? ? NVIC_EnableIRQ(Software_IRQn);


? ? printf("Jumped1\r\n");? -- 已打印

? ? NVIC_SetPendingIRQ(Software_IRQn);


? ? printf("Jumped2\r\n");? -- 沒有打印


? ? //保持運(yùn)行中

? ? while(1);


在ch32v30x_it.c中:

void SW_handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

void SW_handler(void)

{

? ? printf("start APP");?--?沒有打印


? ? __asm("li? a6, 0x5000");

? ? __asm("jr? a6");


? ? while(1);

}


編譯燒進(jìn)芯片后,通過調(diào)試口,只能看到以下輸出

[2023-08-14 22:37:28.450]# RECV ASCII>

SystemClk:96000000

ChipID:30710518

upToVer:E339E339

Jump to APP

Jumped1


疑問1:為什么 Jump2 沒有打印出來??NVIC_SetPendingIRQ() 屬于阻塞式運(yùn)行的?

疑問2:為什么?SW_handler()沒有被調(diào)用?(start APP 沒有打印出來)


或還是需要配置什么地方才可以?對比官方IAP的樣例,一直沒有找到有什么特殊設(shè)置的地方。

您好,已郵件回復(fù)你,中斷函數(shù)名稱有誤,按照下圖修改一下即可,此外打印加上換行符,注意中斷聲明函數(shù)名稱也要修改。

image.png


非常感謝!問題解決了!


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频