以#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进行处理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)