在线时间0 小时
UID347858
注册时间2012-3-16
NXP金币0
该用户从未签到
中级会员
- 积分
- 441
- 最后登录
- 1970-1-1
|
M4 相对于 M3 来说,最大的特点就是多了个DSP内核,而很多人都不知道该如何用这个DSP内核,那就相当于把 M4 当成 M3 来用,o(︶︿︶)o 唉!!!
其实,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 哈哈,数字信号处理没学好,只好先个个简单的例程。
<ol class="dp-cpp"> <li class="alt">/************************************************************************ * 野火嵌入式开发工作室
<li class="alt">* CMSIS库cos、sin测试实验 *
<li class="alt">* 实验说明:野火CMSIS库cos、sin测试实验 *
<li class="alt">* 实验操作:无 *
<li class="alt">* 实验效果:测试成功,则LED流水灯 *
<li class="alt">* 实验目的:熟悉CMSIS库函数的调用 *
<li class="alt">* 修改时间:2012-3-26 已测试 *
<li class="alt">* 备 注: ************************************************************************/
<li class="alt">#define DELTA (0.000001f) //浮点数精度
<li class="alt">float32_t a = 0.45454; //乱来的数据 float32_t cosa, sina, cos2a, sin2a;
//a 的余弦值、正弦值、余弦值平方、正弦值平方
<li class="alt">float32_t test; //测试结果
<li class="alt">void main(void) {
<li class="alt"> float32_t diff; //差值
<li class="alt"> LED_init(); //初始化LED
<li class="alt"> cosa = arm_cos_f32(a); //求cos值,cosa = cos(a); sina = arm_sin_f32(a); //求sin值,sina = sin(a);
<li class="alt"> arm_mult_f32(&cosa, &cosa, &cos2a, 1); //乘法,cos2a = cosa * cosa ,即平方
<li class="alt"> arm_mult_f32(&sina, &sina, &sin2a, 1); //乘法,sin2a = sina * sina ,即平方
<li class="alt"> arm_add_f32(&cos2a, &sin2a, &test, 1); <li class="alt"> //加法,test = cos2a + sin2a = cosa * cosa + sina * sina = 1
<li class="alt"> diff = fabsf( 1.000000000 - test); //求绝对值
<li class="alt"> if( diff
|
|