跨届大侠
- 积分
- 6784
- 威望
- 2910
- 贡献
- 1540
- 兑换币
- 1579
- 注册时间
- 2012-3-17
- 在线时间
- 1167 小时
|
M4 相对于 M3来说,最大的特点就是多了个DSP内核,而很多人都不知道该如何用这个DSP内核,那就相当于把 M4 当成 普通的单片机来用,o(︶︿︶)o唉!!!
{:soso__792744410530523221_1:} 如果不用 DSP 内核 ,那就好比拿牛刀来切豆腐……浪费啊……
其实,M4 的 DSP 内核挺容易用的,ARM公司已经写好了 函数库,我们直接调用就可以了。非常方便……
在这里,野火就把 CMSIS 的 库放进工程里面,你们可以参考官方给参考资料,从而控制 DSP 内核。
什么是CMSIS?看ARM公司的介绍吧:
ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M处理器系列的与供应商无关的硬件抽象层。nbsp;使用CMSIS,可以为接口外设、实时操作系统和中间件实现一致且简单的处理器软件接口,从而简化软件的重用、缩短新微控制器开发人员的学习过程,并缩短新设备的上市时间。
该标准完全可扩展,可确保其适合于所有 Cortex-M 处理器系列微控制器,从最小的 8 KB 设备到具有复杂通信外设(如以太网或USB-OTG)的设备。 (内核外设访问层的 CMSIS 内存要求少于 1 KB 代码,少于 10 字节 RAM)。
工程里的库,就是ARM公司出的CMSIS里DSP库,例程也是根据官方例程修改的,改成容易初学者接受的方式。
o(∩_∩)o 哈哈,数字信号处理没学好,只好先个个简单的例程。
- /************************************************************************
- * 野火嵌入式开发工作室
- * CMSIS库cos、sin测试实验
- *
- * 实验说明:野火CMSIS库cos、sin测试实验
- *
- * 实验操作:无
- *
- * 实验效果:测试成功,则LED流水灯
- *
- * 实验目的:熟悉CMSIS库函数的调用
- *
- * 修改时间:2012-3-26 已测试
- *
- * 备 注:
- ************************************************************************/
- #define DELTA (0.000001f) //浮点数精度
-
- float32_t a = 0.45454; //乱来的数据
- float32_t cosa, sina, cos2a, sin2a;
- //a 的余弦值、正弦值、余弦值平方、正弦值平方
- float32_t test; //测试结果
-
- void main(void)
- {
- float32_t diff; //差值
-
- LED_init(); //初始化LED
-
- cosa = arm_cos_f32(a); //求cos值,cosa = cos(a);
- sina = arm_sin_f32(a); //求sin值,sina = sin(a);
-
- arm_mult_f32(&cosa, &cosa, &cos2a, 1); //乘法,cos2a = cosa * cosa ,即平方
- arm_mult_f32(&sina, &sina, &sin2a, 1); //乘法,sin2a = sina * sina ,即平方
-
- arm_add_f32(&cos2a, &sin2a, &test, 1);
- //加法,test = cos2a + sin2a = cosa * cosa + sina * sina = 1
-
- diff = fabsf( 1.000000000 - test); //求绝对值
-
- if( diff <= DELTA) //如果测试结果在精度范围之内
- {
- while(1)
- {
- water_lights(); //流水灯表示成功
- }
- }
- }
代码里面,arm_xxx_f32 这些就是ARM公司给的DSP库 的函数。其实,就是熟悉那些函数接口而已……
而函数接口,ARM公司的帮助文档里写得非常详细,只不过是英文,害怕了很多人……
我们用的是 从 ARM 公司下载来,编译的库,2.10 ,已经打了5个补丁的了。(现在也出了 3.0 的库)
不是用 IAR 自带的 CMSIS库,当然,我们也可以用 IAR 自带的库 ,但库比较旧。
IAR自带的库所在默认路径为: C:\Program Files\IARSystems\Embedded Workbench 6.0\arm\CMSIS\Lib\IAR :
iar_cortexM0b_math.a
iar_cortexM0l_math.a
iar_cortexM3b_math.a
iar_cortexM3l_math.a
iar_cortexM4bf_math.a
iar_cortexM4b_math.a
iar_cortexM4lf_math.a
iar_cortexM4l_math.a
iar 指编译器 ; cortexM* 指的是内核 , l 表示小端 ,b表示大端 ,f 表示带浮点单元
下载地址:
注意:我们新版本的教程: 三天入门M4——Kinetis(V2).pdf ,里面有讲解如何查看官方的帮助文档。
补充内容 (2012-3-27 18:38):
新版本的PDF教程,可以在3楼下载…… |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|