You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
关中断函数OS_ENTER_CRITICAL()和_OS_ENTER_CRITICAL(u32 bit list)的区别
前者会关掉所有中断的总中断,调用后通过OS_EXIT_CRITICAL开总中断;后者会关掉括号内置的中断以外的中断,单独保留括号内的中断正常响应,调用后通过_OS_EXIT_CRITICAL恢复关中断前的状态。注意,后者不可重复调用。
如果用户有VM需求,而且写VM时需要响应定时器中断的话,则需要将中断函数和中断里调用的函数和变量都放在RAM,且调用下图中函数响应定时器中断(以timer1中断为例)。
一、简介
SDK中存在很多临界保护区域需要开关中断,有些开关中断的地方会为了防止卡音等问题会放出AUDIO等中断,这些中断可能会延后开总中断的时间(如图,此处开总中断的时间有时会延后300多us),然后导致定时器中断时间不准,本文将说明如何解决该问题;
二、涉及的SDK版本
ad140-release_v1.3.0 以及后续版本
ac104n-release_v1.3.0 以及后续版本
ad150-release_v1.3.0 以及后续版本
三、解决方法
四、补充说明
关中断函数OS_ENTER_CRITICAL()和_OS_ENTER_CRITICAL(u32 bit list)的区别
前者会关掉所有中断的总中断,调用后通过OS_EXIT_CRITICAL开总中断;后者会关掉括号内置的中断以外的中断,单独保留括号内的中断正常响应,调用后通过_OS_EXIT_CRITICAL恢复关中断前的状态。注意,后者不可重复调用。
如果用户有VM需求,而且写VM时需要响应定时器中断的话,则需要将中断函数和中断里调用的函数和变量都放在RAM,且调用下图中函数响应定时器中断(以timer1中断为例)。
五、相关链接
https://github.com/Jieli-Tech/fw-AD15N/issues/29
The text was updated successfully, but these errors were encountered: