CH32V103 的全局中断

在CH32V103?中可以使用CH32V003 core_riscv.h?中的? __enable_irq()?和 _disable_irq()?关闭?开启全局中断吗?

/*********************************************************************

?* @fn? ? ? __enable_irq

?*

?* @brief? ?Enable Global Interrupt

?*

?* @return? none

?*/

RV_STATIC_INLINE void __enable_irq()

{

? __asm volatile ("csrw mstatus, %0" : : "r" (0x1888) );

}


/*********************************************************************

?* @fn? ? ? __disable_irq

?*

?* @brief? ?Disable Global Interrupt

?*

?* @return? none

?*/

RV_STATIC_INLINE void __disable_irq()

{

? __asm volatile ("csrw mstatus, %0" : : "r" (0x1800) );

}


你好,CH32V103开启或关闭总中断需要在机器模式下操作CSR寄存器mstatus(状态寄存器),需要对启动文件(.S文件)进行修改,将原来的值0x88改为0x1888,如下图。此外还需要在core_riscv.h文件中添加开启和关闭函数,如下图。

image.png

image.png


谢谢


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