dsp的程序问题。解释一下dsp c 语言的问题

dsp的程序问题。解释一下dsp c 语言的问题,第1张

从这些宏定义可以看到C语言是如何支持硬件编程的。

以#define IMR *(volatile unsigned int *)0x0004 为例:

1)0x0004,这个容易理解,是一个十六进制的常数

2)再看(volatile unsigned int *),这是一个强制转换,将0x0004转换成(volatile usigned int *)

3)现在解释volatile usigned int *是什么。* 表示指针(地址),这个指针指向一个 usigned int的数。最前面的volatile有特殊含义:这个指针必须保存在RAM中(不是FLASH或DSP寄存器中)

4)综合上面1)2)3)可知: (volatile unsigned int *)0x0004 的含义是:

0x0004是一个地址,在这个地址内保存的是一个unsigned int 类型的整数。这个地址存在于RAM

5)*(volatile unsigned int *)0x0004 最左边多一个*,表示取地址指向单元的内容。综合起来的意思是:从0x0004地址单元中取出一个usigned int 类型的数据值

6)#define IMR *(volatile unsigned int *)0x0004 的意思是,将从0x0004地址单元中取出一个usigned int 类型的数据值定义为IMR

7)根据DSP硬件,在DSP中RAM中的 0x0004地址单元恰好是中断管理寄存器!

8)绕了半天,#define IMR *(volatile unsigned int *)0x0004 的意思是:在C语言程序中,定义了一个宏标示符 IMR 来表示DSP中的中断管理寄存器。在程序中,可以通过这个宏标示符来使用这个寄存器:

unsigned int v = IMR //取出中断管理寄存器的值并赋给v

第一部分,定义寄存器地址,

主程序,main 对控制寄存器进行配置,定时器初始化,AD初始化及通道选择,然后用while(1)等待中断。

interrupt time,定时器中,对AD进行处理


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8054363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存