ccs编译源文件的编译顺序?

[复制链接]
1999|17
手机看帖
扫描二维码
随时随地手机跟帖
李小声| | 2014-12-4 16:28 | 显示全部楼层
不知道啊!

使用特权

评论回复
edishen| | 2014-12-4 17:52 | 显示全部楼层
编译顺序不重要吧

使用特权

评论回复
zhangmangui| | 2014-12-4 22:50 | 显示全部楼层
编译过程中打印信息就可以看出过程   

使用特权

评论回复
1831249703|  楼主 | 2014-12-11 16:32 | 显示全部楼层
zhangmangui 发表于 2014-12-4 22:50
编译过程中打印信息就可以看出过程

版主您好,我最近遇到一个问题,就是不能进入中断,还有watch window 中显示identifier not found: InterruptCount,在网上查了查也没找到答案,麻烦您帮我看看吧,谢谢了

cpu_timer.rar

433.26 KB

使用特权

评论回复
zhangmangui| | 2014-12-11 21:32 | 显示全部楼层
1831249703 发表于 2014-12-11 16:32
版主您好,我最近遇到一个问题,就是不能进入中断,还有watch window 中显示identifier not found: Inter ...

供参考   
外围帧寄存器2812将外围帧寄存器分为3个空间,分别是:外围帧0:直接映射到 CPU存储器总线外围帧1:映射到32位外围总线外围帧2:映射到16位外围总线,只允许16操作这里所说的外围帧寄存器就是外设寄存器,如ADC寄存器。映射就是分配地址,外围一个地址,CPU一个地址,外围地址映射到CPU地址上。 (1) 有的寄存器受保护,对其进行操作的时候好,要屏蔽保护(EALLOW),操作完在 开启保护(EDIS).  (2) 外围中断扩展PIE外设寄存器中的中断标志位必须由软件清0,才能允许下一次中 断进入,而且每次中断后要把PIEACKx清0,只有PIEACKx=0,才可以把中断送到CPU级中断分为3级:a、外设级b、PIE级c、CPU级下面分别介绍这个不同的中断级以及这3级的联系a、外设级一旦外设产生了中断,对应的外设中断标志寄存器中的中断标志位IF就会置位,如果此时对应的中断使能位设为1,那么外设中断信号可以送到PIE控制器,如果外设的中断被禁止输入进来,那么外设中断标志位保持为1,直到软件清0。外设级和PIE级的联系就在外设中断使能位那了,实际外设的中断使能位使能的就是允许外设中断进入PIE级,相当于PIE级的中断源,就像外设的中断源一样,有了中断事件,外设中断标志位就会置位,这里也是外设级就是PIE级得中断事件,有了外设级的中断标志位置位,中断使能位使能,那么PIE级的中断标志位才会置1.注意的是外设中断标志寄存器中的中断标志位必须由软件清0,才能允许下一次中断进入。b、PIE级PIE级有两中寄存器,一种是中断标志寄存器PIEIFRx,上面已经说过他跟外设级的联系,另一个是中断使能寄存器PIEIERx,这个跟外设级的中断使能寄存器功能差不多,实现的是和CPU级的联系.PIE级还有两个寄存器,一个是控制寄存器PIECTRL,这个是控制整个PIE级的,还有一个应答寄存器PIEACK,在PIEIFRx置位,PIEIERx使能还要PIEACKx清0才能把中断送到CPU级。这里注意的是PIEIFRx由硬件清0,但是PIEACKx要由软件清0.c、CPU级CPU级是最终控制中断响应的,也是有两种寄存器,一个是中断标志寄存器IFR,另一个是中断使能寄存器IER。IFR是这三级中断的最终的中断标志位,IER是这三级中断的最终中断使能位,只有这三级中断标志位同时置位,三级中断同时使能,这里还有一个CPU级的中断屏蔽位INTM,在以上条件满足的前提下,中断屏蔽位INTM=0,CPU才能响应中断,找到中断向量,跳转到中断函数,执行中断操作,CPU级的中断标志位由硬件清0,在中断函数中不用管。这就是它的中断过程。3、96个中断介绍2812分为12组中断,每组中断有8个中断源,以INTx.y表示,其中x是组(x=1~12),y(y=1~8)是组中的位.在配置中断的时候,外设级的中断使能位要使能;PIECTRL寄存器使能PIE;要知道INTx.y中的xy是多少,找到PIEIERx(x=1~12)的x是多少,使能PIEIERx;PIEACKx(x=1~12)的x是多少给其清0;IERx(x=1~12)的x是多少,使能IERx;中断屏蔽位INTM=0; 中断函数中要处理的:外设中断标志位软件清0PIEACKx(x=1~12)软件清0;4、C代码分析以定时器0的C代码分析timer0的中断向量INT1.7(x=1,y=7),用到的PIE级的中断使能寄存器是PIEIER1,CPU级的IER1.在2812的库函数中有一个定义中断入口地址的函数,用户的中断函数内容可以在这里面写,就不容另外赋中断地址了。中断函数入口地址interrupt void TINT0_ISR(void)  。在DSP复位后,进入中函数前,看门狗开着的,所以在进入中函数后第一件事情是关看门狗,在这个函数里面InitSysCtrl();中断是开着的需要关闭(DINT;),PIE寄存器(InitPieCtrl();//初始化pie寄存器)( IER = 0x0000;//禁止所有的中断 IFR = 0x0000;)、中断向量表是没有初始化的,所以要初始化(InitPieVectTable();//初始化pie中断向量表)。InitSysCtrl();//初始化cpu DINT;//关中断  InitPieCtrl();//初始化pie寄存器 IER = 0x0000;//禁止所有的中断 IFR = 0x0000;  InitPieVectTable();//初始化pie中断向量表 EALLOW;  // This is needed to write to EALLOW protected registers  PieVectTable.TINT0 = &cpu_timer0_isr;//指定中断服务子程序,这个地方要是用到了DSP的库函数DSP281X_DefaultIsr()函数就不需要了。 EDIS;  InitCpuTimers();//初始化定时器0  ConfigCpuTimer(&CpuTimer0,150,9.75);//配置你要定时的时间 StartCpuTimer0();//定时器开始计数  PieCtrlRegs.PIEIER1.bit.INTx7 = 1;//使能PIE级中断PIEIERx中的x=1,即使能的12组中的第1组第七个  IER |= M_INT1;//使能CPU级的中断第1组 EINT; // 使能INTM ERTM;  // 使能仿真时 DBGM5、在中断函数中要做的interrupt void TINT0_ISR(void) // CPU-Timer 0{  PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //PIEACK清0 CpuTimer0Regs.TCR.bit.TIF = 1;//外设中断标志位清0  CpuTimer0Regs.TCR.bit.TRB = 1;//重新装载 }   

使用特权

评论回复
zhangmangui| | 2014-12-11 21:34 | 显示全部楼层
1831249703 发表于 2014-12-11 16:32
版主您好,我最近遇到一个问题,就是不能进入中断,还有watch window 中显示identifier not found: Inter ...

identifier not found: InterruptCount
一般是由于查看的不是变量引起的
如果查看寄存器   一定要写全明

使用特权

评论回复
zhangmangui| | 2014-12-12 23:06 | 显示全部楼层
1831249703 发表于 2014-12-12 12:05
你说的那些我都检查过,应该都对着呢,后来我在网上又下了一个定时器例程,后来把主函数一改就对了,但是 ...

你重点看看定时器的初始化有没有

// Step 4. Initialize the Device Peripheral. This function can be
//         found in DSP2833x_CpuTimers.c
//  InitCpuTimers();   // For this example, only initialize the Cpu Timers

使用特权

评论回复
1831249703|  楼主 | 2014-12-13 11:43 | 显示全部楼层
zhangmangui 发表于 2014-12-12 23:06
你重点看看定时器的初始化有没有

// Step 4. Initialize the Device Peripheral. This function can be ...

找了好久,谢谢你,感激,我懂了。太高兴了。还有版主,你手头有spwm的例程吗?方便的话给我传一个吧

使用特权

评论回复
zhangmangui| | 2014-12-13 12:04 | 显示全部楼层
1831249703 发表于 2014-12-13 11:43
找了好久,谢谢你,感激,我懂了。太高兴了。还有版主,你手头有spwm的例程吗?方便的话给我传一个吧 ...

你先玩玩SPWM波吧     我这里没有  
你找找我的分享  里面记得有28335的代码分享

使用特权

评论回复
zhangmangui| | 2014-12-27 11:02 | 显示全部楼层
感谢楼上分享

使用特权

评论回复
zhangmangui| | 2014-12-27 11:24 | 显示全部楼层
1831249703 发表于 2014-12-26 17:17
版主您好,最近研究了一阵f28335的spwm,但是输出的正弦周期跟实际的正弦周期差三倍,我把我的写的代码给 ...

你确认一下时钟配置  吧

使用特权

评论回复
1831249703|  楼主 | 2014-12-27 11:58 | 显示全部楼层
zhangmangui 发表于 2014-12-27 11:24
你确认一下时钟配置  吧

这个时间配置好的呢,是150M,我感觉我的问题是事件触发子模块寄存器的原因,但是不知道哪里错了,200个点,100us进一次中断,但是就是不对呢

使用特权

评论回复
1831249703|  楼主 | 2014-12-27 11:59 | 显示全部楼层
zhangmangui 发表于 2014-12-27 11:24
你确认一下时钟配置  吧

我感觉我的问题是事件触发子模块寄存器的原因,但是不知道哪里错了,200个点,100us进一次中断。时钟配置对的呢,150M

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

125

帖子

2

粉丝