这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » DSP 新手求救,怎样用C语言访问和修改DSP片上外设的寄存器啊?

共2条 1/1 1 跳转至

DSP 新手求救,怎样用C语言访问和修改DSP片上外设的寄存器啊?

院士
2006-09-17 18:14:16     打赏
DSP 新手求救,怎样用C语言访问和修改DSP片上外设的寄存器啊?



关键词: 新手     求救     怎样     语言     访问     修改     片上     外设         

院士
2006-12-22 22:43:00     打赏
2楼
问 请教各位前辈,如何在CCS中用C语言访问和修改DSP片上外设的寄存器值啊?能给个参考的范例代码吗?另外,寄存器的地址和内存的地址有何区别?怎么觉得它们有重叠啊? 1: 新手求救,怎样用C语言访问和修改DSP片上外设的寄存器啊?寄存器就是内存数据空间的一部分呀。每个寄存器都有地址,这个地址就是其所在内存的位置。

用C语言设置CPU以及片上外设的例子:
首先在函数外部预定义寄存器的地址,不同的芯片寄存器的地址不同,要查询芯片手册。下面的例子是TI的C5409的:
#define IMR 0x0000
#define IFR 0x0001
#define ST0 0x0006
#define ST1 0x0007
……
#define DRR2_0 0x0020 //McBSP 0 CHANNEL DATA RECEIVE REGISTER 2
#define DRR2_1 0x0040 //McBSP 1 CHANNEL DATA RECEIVE REGISTER 2
#define DRR2_2 0x0030

然后在函数内部给寄存器赋值,例如:
main()
{
……
*(int *)IFR=0xffff;
*(int *)IMR=0x0400;
……
}
当然也可以在子函数中如此操作。
不知道我说明白了没有。 2: 用asm(" xxxxx") 3: c访问DSP片上外设#define IMR 0x0000
main()
{
    *(volatile int *)IMR=0x400;
}

避免优化时出现错误

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]