nRF52笔记(2) 启用浮点运算 FPU 功耗异常解决方法

138 阅读1分钟

原因 因为用了算法工程师的算法,发现52832电流突然飙升到MA级别,后来排除问题,发现只要启用浮点,电流就上来了, 接下来就是查看如果让FPU正常,资料搜索无数,发现下面的方法解决了问题

方法 初始化启用fpu中断

NVIC_SetPriority(FPU_IRQn, APP_IRQ_PRIORITY_LOW);
NVIC_EnableIRQ(FPU_IRQn)

在在中断中清除fpscr

#define FPU_EXCEPTION_MASK 0x0000009F
void FPU_IRQHandler(void)
{
    uint32_t *fpscr = (uint32_t *)(FPU->FPCAR+0x40);
    (void)__get_FPSCR();

    *fpscr = *fpscr & ~(FPU_EXCEPTION
}