您当前的位置: 首页 > 

仙剑情缘

暂无认证

  • 0浏览

    0关注

    333博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

NRF52832 SDK15.3 FPU功能配置

仙剑情缘 发布时间:2020-04-05 13:15:59 ,浏览量:0

  • keil中配置

  • 在sdk_config.h中配置
    //  NRF_PWR_MGMT_CONFIG_FPU_SUPPORT_ENABLED  - Enables FPU event cleaning.
     
    
    #ifndef NRF_PWR_MGMT_CONFIG_FPU_SUPPORT_ENABLED
    #define NRF_PWR_MGMT_CONFIG_FPU_SUPPORT_ENABLED 1
    #endif
  • 定义FPU相关宏
    #define FPU_EXCEPTION_MASK               0x0000009F                      //!< FPU exception mask used to clear exceptions in FPSCR register.
    #define FPU_FPSCR_REG_STACK_OFF          0x40                            //!< Offset of FPSCR register stacked during interrupt handling in FPU part stack.
    
  • 使能FPU中断
        NVIC_SetPriority(FPU_IRQn, APP_IRQ_PRIORITY_LOWEST);
        NVIC_ClearPendingIRQ(FPU_IRQn);
        NVIC_EnableIRQ(FPU_IRQn);
  • FPU中断处理函数
/**
 * @brief FPU Interrupt handler. Clearing exception flag at the stack.
 *
 * Function clears exception flag in FPSCR register and at the stack. During interrupt handler
 * execution FPU registers might be copied to the stack (see lazy stacking option) and
 * it is necessary to clear data at the stack which will be recovered in the return from
 * interrupt handling.
 */
void FPU_IRQHandler(void)
{
    // Prepare pointer to stack address with pushed FPSCR register.
    uint32_t * fpscr = (uint32_t * )(FPU->FPCAR + FPU_FPSCR_REG_STACK_OFF);
    // Execute FPU instruction to activate lazy stacking.
    (void)__get_FPSCR();
    // Clear flags in stacked FPSCR register.
    *fpscr = *fpscr & ~(FPU_EXCEPTION_MASK);
}
以上步骤是使能硬件FPU功能操作 

 

 

 

 

 

关注
打赏
1658017818
查看更多评论
立即登录/注册

微信扫码登录

0.0360s