关于dsp2812 编程的一点点一问

各位高手,情况是这样的。dsp由于上电复位之后,状态寄存器基本清零,我不知道IER和IFR会不会清零呢?另外写程序的时候voidmain(void){InitSysCtr... 各位高手,情况是这样的。dsp由于上电复位之后,状态寄存器基本清零,我不知道IER和IFR会不会清零呢?
另外写程序的时候
void main (void)
{
InitSysCtrl();
DIINT;
IER=0x0000;
IFR=0x0000;
............

}
程序固化在dsp芯片中,一上电,系统开始初始化,在程序初始化的过程中会不会意外出现中断,致使系统初始化中断不能进行下去。(当然 InitSysCtrl()函数中并不包含DINT这个命令)如果这种情况出现了怎么办呢?是不是应该把DINT写到 InitSysCtrl()函数去? 第二系统执行完 InitSysCtrl()命令以后,接着是关中断。这时IER, IFR寄存器中的值是什么,和上一次dsp的工作状态有关?还是已经复位了?若是复位了清零,下面的命令是不是就是多余的了?那既然这么写,应该中断的这寄存器并没有清零。既然关了总的中断,还有必要将使能和允许都置零么?这又是出于什么样的一种编程思想呢?
小弟刚刚接触 希望大虾指点一二 不胜感激
还有啊 我做CpuTimer0定时器中断时,要初始化预定标计数器,我看程序是这么写的
CpuTimer0Regs.TPR.all=0;
CpuTimer0Regs.TPRH.all=0;
这两条指令怎么解释呢?
分数没有问题 ,哪位大侠说明白了 多加分没有问题 。
展开
 我来答
wanglingleo
推荐于2018-04-13 · TA获得超过282个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:48万
展开全部
dsp由于上电复位之后,IER和IFR清零

DINT写那里都一样的。

定时器预定标计数器TPR的设置

此计数器为32位。其低16位为PSC:TDDR,高16位为PSCH:TDDRH。

由PSCH:PSC组成定时器预定标计数器,保持定时器的当前预定值。PSCH:PSC减到0后则为一个定时器时钟周期。

由TDDRH:TDDR组成定时器分频值。即每过(TDDRH:TDDR+1)个定时器时钟源周期(SYSCLKOUT),定时器计数器寄存器(TIMH:TIM)就减1。

而(TIMH:TIM)的初始值由定时器周期寄存器PRD的值装入。

由此可知,定时器中断周期的实际值为:

Ttimer = SYSCLKOUT * ( TDDRH:TDDR+1 ) * ( PRDH:PRD )

此时的SYSCLKOUT为时间值



Ftimer = SYSCLKOUT / (TDDRH:TDDR+1 ) / (PRDH:PRD )

此时的SYSCLKOUT为频率值

例如,本程序中,SYSCLKOUT = 1 / ( 60*10^6 ),且定时器初始化时设置如下:

CpuTimer2Regs.PRD.all = 0x0000258;

CpuTimer2Regs.TPR.all = 0;

CpuTimer2Regs.TPRH.all = 0;

则TDDRH:TDDR = 0,而PRDH:PRD = 0x258 = 600,

所以此时Ftimer = ( 60*10^6 ) / 1 / 600 = 100000 = 100 K
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式