CH32F103中关于IAP中,应用程序的中断向量问题

用CH32F103调试IAP,应用程序起始地址为0x8002000;程序可以正常运行,程序无法产生中断,应该应用程序中断向量表有问题,RAM起始0x20000000;


生产SCF文件如下:

LR_IROM1 0x08002000 0x00010000  {    ; load region size_region

  ER_IROM1 0x08002000 0x00010000  {  ; load address = execution address

   *.o (RESET, +First)

   *(InRoot$$Sections)

   .ANY (+RO)

   .ANY (+XO)

  }

  RW_IRAM1 0x20000000 0x00005000  {  ; RW data

   .ANY (+RW +ZI)

  }

}

请问,如何在应用程序中响应中断?谢谢!

您好,可以检查一下在应用程序中main函数的开头是否设置了中断向量表偏移,以及flash的起始位置是否改变,如下图:

image.png


好的,我试试



CH32F203与CH32F103是不是一样设置就可以了?



我现在正式板子回来了,用的是CH32F203,加上SCB->VTOR=FLASH_BASE|0X2000;还是收不到中断,还有没有别的设置什么的?


您好,F203和F103基本差不多,但FLASH编程方式有点区别,若使用快速编程方式的话,F103是128字节编程,F203是256字节编程,具体可参考应用手册。你在写IAP程序的时候需要注意一下FLASH的编程和擦除。此外,F203系列不同型号,在使用时需要注意修改一下宏定义和启动文件。

CH32F103应用手册:/downloads/CH32xRM_PDF.html 

CH32F203应用手册:/downloads/CH32FV2x_V3xRM_PDF.html 

image.png

image.png


1654689489159990.png

1654689489173580.png


这两个地方都设置了,但是不能主程序运行,中断调不过来


您好,这边建议你先这样试一下,先不通过IAP升级,直接下载用户程序(就正常程序,不需要进行IAP升级配置)试一下看用户程序是否能正常运行,若可以正常运行,建议你读FLASH内容和用户程序文件对比一下是否一致,检查一下是否在升级过程中出现问题。



我们现在还没有IAP来升级,只是降应用程序有KEIL5下载到我们的设备上,然后来运行发现产生不了中断,这个步骤方法我们在之前厂家的mcu上使用过得


   老哥,这个现在有解决吗,我现在用的ch32F103也是中断调不过来,从0x8000000启动是正常的,加了IAP程序之后,APP从0x8002000启动就不正常


您好,若中断运行不正常,可尝试在main函数中加中断向量偏移试一下,如下图

image.png


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