本帖最后由 day_day 于 2020-1-12 18:51 编辑
(一)POWERQUAD
POWERQUAD是NXP为LPC5500设计的数学运算加速库,其能够加速包括除法、开放、自然指数、三角函数等常见数学运算,另外还支持矩阵运算和FFT变换等加速。
。
(二)使用方法 POWERQUAD并非直接兼容替代math库,而是需要调用其函数,或者替代CMSIS-DAP库。 根据API文档: 该库一种是完全自定义的函数,比如PQ_CosF32 还有一种是兼容替代的CMSIS-DSP库,比如PQ_CosQ31
1、启动FPU 加入宏定义:__FPU_PRESENT=1 配置硬件FPU浮点单元 2、加入相关文件: fsl_powerquad.h、fsl_powerquad.c、fsl_powerquad_data.h、fsl_powerquad_data.c、fsl_powerquad_math.c 3、初始化powerquad PQ_Init(POWERQUAD);
4、调用数学函数 PQ_CosF32(&input, &result);
(三)实验 通过实验,观察POWERQUAD到底有多牛逼: - CTIMER0->TC = 0;
- CTIMER_StartTimer(CTIMER0);
- float input = 3.1415926535898/6,result=0;
- for(int i=0;i<100;i++)
- {
- PQ_CosF32(&input, &result);
- }
- CTIMER_StopTimer(CTIMER0);
- memset(reportStr, 0, sizeof(reportStr));
- sprintf(reportStr, "report:%f;counter time:%d\r\n",result,CTIMER_GetTimerCountValue(CTIMER0));
- PRINTF_UART0(reportStr);
- CTIMER0->TC = 0;
- CTIMER_StartTimer(CTIMER0);
- for(int i=0;i<100;i++)
- {
- result=cos(input);
- }
- CTIMER_StopTimer(CTIMER0);
- memset(reportStr, 0, sizeof(reportStr));
- sprintf(reportStr, "report:%f;counter time:%d\r\n",result,CTIMER_GetTimerCountValue(CTIMER0));
- PRINTF_UART0(reportStr);
复制代码
。。。
|