/**
\brief Get Priority Mask
\details Returns the current state of the priority mask bit from the Priority Mask Register.
\return Priority Mask value
*/
__STATIC_INLINE uint32_t __get_PRIMASK(void)
{
register uint32_t __regPriMask __ASM("primask");
return(__regPriMask);
}
/**
\brief Set Priority Mask
\details Assigns the given value to the Priority Mask Register.
\param [in] priMask Priority Mask
*/
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
{
register uint32_t __regPriMask __ASM("primask");
__regPriMask = (priMask);
}
我觉得是进入低功耗前,执行禁止全局中断 。
RESTORE_PRIMASK
这个是还原全局中断。
具体要查看相关子程序的代码。
评分
查看全部评分
评分
查看全部评分
#define DISABLE_IRQ() __disable_irq() //屏蔽中断
#define ENABLE_IRQ() __enable_irq()
#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
/**
\brief Get Priority Mask
\details Returns the current state of the priority mask bit from the Priority Mask Register.
\return Priority Mask value
*/
__STATIC_INLINE uint32_t __get_PRIMASK(void)
{
register uint32_t __regPriMask __ASM("primask");
return(__regPriMask);
}
/**
\brief Set Priority Mask
\details Assigns the given value to the Priority Mask Register.
\param [in] priMask Priority Mask
*/
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
{
register uint32_t __regPriMask __ASM("primask");
__regPriMask = (priMask);
}
心里有点概念但是还是不清晰,特别是感觉和DISABLE_IRQ()重复
评分
查看全部评分
唤醒是RTC_alarmA中断唤醒~目前我处理方式和他有一点不同没发现问题,查了权威指南,但是还是理解不到位~源码http://www.st.com/en/embedded-software/i-cube-lrwan.html