您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第6章ARM官方DSP库的移植
安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第11页页共共88页页第第66章章AARRMM官官方方DDSSPP库库的的移移植植本期教程主要讲解ARM官方DSP库的移植和一些相关知识的介绍。6.1DSP库的下载和说明6.2DSP库在MDK上的移植6.3简易DSP库函数验证6.4总结66..11DDSSPP库库的的下下载载和和说说明明下面详细的给大家讲解一下官方DSP库的移植。66..11..11DDSSPP库库的的下下载载DSP库是包含在CMSIS(CortexMicrocontrollerSoftwareInterfaceStandard)里面的,所以下载DSP库也就是下载CMSIS。有两个地方可以下载CMSIS,一个是ARM官网,一个是ST官网。首先说一下如何在ARM官网下载。第一步:登陆ARM官方网址:第二步:注册一个ID号,ARM官网不像ST官网,不注册就可以下载大部分资料,在ARM官网下载资料一定要注册一个ID。安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第22页页共共88页页第三步:具体注册过程就不多说了,按照提示步骤走即可。注册后可以简单的熟悉一下ARM官网的结构,然后查询我们需要下载的CMSIS,也可以直接在这里检索CMSIS即可。检索后打开界面如下:点击进去后,如下就是我们要找的CMSIS关于ST官方上CMSIS的下载就不在这里赘述了,在STM32-V5开发板用户手册第5章:ST官方固件库安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第33页页共共88页页介绍有详细的说明。66..11..22DDSSPP库库的的说说明明这里我们以ST官方的F4系列固件库V1.3.0为标准进行移植。打开固件库里面的CMSIS文件,可以看到如下几个文件:其中DSP_Lib中的文件如下:Examples中的文件如下(这些是ARM官方提供的DSP实例):Source中的文件如下(这些是DSP库的源文件):安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第44页页共共88页页一般情况下不建议将源文件加到工程里面,直接将ARM官方整理好的DSP库文件加入到工程中即可。不过需要查看库文件源码实现的话,可以加入源文件。Lib文件夹中就是DSP库文件打开后主要有以下三个文件夹:其中ARM文件夹中是我们可以加入到MDK中的DSP库,主要有以下几个版本:其中最后一个arm_cortexM4lf_math.lib是用于Cortex-M4系列带FPU的DSP库文件(l表示小端格式,b表示大端格式)。66..22DDSSPP库库在在MMDDKK上上的的移移植植下面我们讲解一下如何在MDK上面移植DSP库,DSP库的移植相对比较容易。这里我们仅介绍如何移植DSP库到MDK上面,官方没有IAR版本的库,所以无法提供移植(可以尝试将源码在IAR中进行编译)。66..22..11第第一一步步::建建立立MMDDKK工工程程并并添添加加DDSSPP库库为了方便起见,我们这里不再专门建立一个MDK工程了,直接以V5开发板中的例子:V5-101_按键检测和LED控制例程为模板进行添加即可。打开这个实例并在左侧添加针对Cortex-M4F的DSP库。安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第55页页共共88页页66..22..22第第二二步步::添添加加头头文文件件路路径径添加DSP所需的头文件路径,这个头文件路径是已经在工程中添加好的,这里只是跟大家强调一下。66..22..33第第三三步步::添添加加宏宏定定义义添加宏定义如下(这里将STM3240XX换成了STM32F40_41xxx):安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第66页页共共88页页66..22..44第第四四步步::开开启启FFPPUU需要客户通过MDK开启FPU,开启方法如下:另外根据ARM官方DSP库的要求,还需要设置宏__FPU_PRESENT为1,不过这个宏已经在文件stm32f4xx.h中设置了(为保险起见,建议把__FPU_PRESENT在第三步的地方也加上,因为部分DSP函数会因为没有这个声明而报错)。66..22..55第第五五步步::添添加加头头文文件件aarrmm__mmaatthh..hh用到DSP库函数的相应的文件得添加#includearm_math.h的支持。按照上面五部操作即可完成DSP库的移植,移植好我们通过几个DSP库中的函数验证下是否正确。66..33简简易易DDSSPP库库函函数数验验证证这里我们主要运行下函数arm_abs_f32,arm_abs_q31,arm_abs_q15这三个函数,以此来验证我们移植的DSP库是否正确。实验目的:1.学习官方DSP库的移植安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第77页页共共88页页实验内容:1.按下按键K1,串口打印函数arm_abs_f32的输出结果2.按下按键K2,串口打印函数arm_abs_q31的输出结果3.按下按键K3,串口打印函数arm_abs_q15的输出结果实验现象:通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下(分别按几次K1,K2,K3):程序设计:程序的设计也比较简单,通过按下不同的按键从而打印不同的DSP库函数执行结果,主程序如下:#includebsp.h/*底层硬件驱动*/#includearm_math.h/*定义例程名和例程发布日期*/#defineEXAMPLE_NAMEV5-900_ARM官方DSP库的移植#defineEXAMPLE_DATE2014-08-25#defineDEMO_VER1.0/*仅允许本文件内调用的函数声明*/staticvoidPrintfLogo(void);/***********************************************************************************************************函数名:main*功能说明:c程序入口*形参:无*返回值:错误代码(无需处理)**********************************************************************************************************/intmain(void)安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第88页页共共88页页{uint8_tucKeyCode;/*按键代码*/float32_tpSrc;float32_tpDst;q31_tpSrc1;q31_tpDst1;q15_tpSrc2;q15_tpDst2;bsp_Init();/*硬件初始化*/PrintfLogo();/*打印例程信息到串口1*/bsp_StartAutoTimer(0,500);/*启动1个500ms的自动重装的定时器*//*进入主程序循环体*/while(1){bsp_Idle();/*这个函数在bsp.c文件。用户可以修改这个函数实现CPU休眠和喂狗*/if(bsp_CheckTimer(0))/*判断定时器超时时间*/{/*每隔500ms进来一次*/bsp_LedToggle(4);/*翻转LED4的状态*/}/*按键滤波和检测由后台systick中断服务程序实现,我们只需要调用bsp_GetKey读取键值即可。*/ucKeyCode=bsp_GetKey();/*读取键值,无键按下时返回KEY_NONE=0*/if(ucKeyCode!=KEY_NONE){switch(ucKeyCode){caseKEY_DOWN_K1:/*K1键按下*/pSrc-=1.23f;arm_abs_f32(&pSrc,&pDst,1);printf(pDst=%f\r\n,pDst);break;caseKEY_DOWN_K2:/*K2键按下*/pSrc1-=1;arm_abs_q31(&pSrc1,&pDst1,1);printf(pDst1=%d\r\n,pDst1);break;caseKEY_DOWN_K3:/*K3键按下*/pSrc2-=1;arm_abs_q15(&pSrc2,&pDst2,1);printf(pDst2=%d\r\n,pDst2);break;default:/*其它的键值不处理*/break;}}}}66..44总总结结本期教程主要跟大家介绍了官方DSP库的移植,相对来说移植也比较简单,建议初学的同学按照这个步骤移植一遍。
本文标题:第6章ARM官方DSP库的移植
链接地址:https://www.777doc.com/doc-5071815 .html