[关闭]
@floatsd 2016-05-14T20:50:09.000000Z 字数 1399 阅读 743

实验三 定时器实验

note_DSP


1 实验目的

  1. 掌握 CPU 定时器的配置方法;
  2. 掌握外设中断的初始化和中断处理过程;

2 实验内容

2.1 实验准备

2.2 运行程序观察效果

  1. interrupt void cpu_timer0_isr(void) {
  2. PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
  3. CpuTimer0Regs.TCR.bit.TIF = 1;
  4. CpuTimer0Regs.TCR.bit.TRB = 1;
  5. if (nCount == 0) {
  6. LEDS = uLBD; //将16进制数写入LED所在地址
  7. uLBD++;
  8. uLBD %= 16; //确保uLBD在16以内
  9. }
  10. nCount++;
  11. nCount %= 194; //周期值为194个Timer周期
  12. }
i 小灯 i 小灯 i 小灯 i 小灯
0 0000 1 0001 2 0010 3 0011
4 0100 5 0101 6 0110 7 0111
8 1000 9 1001 10 1010 11 1011
12 1100 13 1101 14 1110 15 1111

3 实验结论

3.1 现象观察

4 思考题

  1. 简述CPU 定时器0中断的配置方法,给出定时器中断程序的流程图。
    TIMER0中断为典型的PIE中断,中断程序流程图如下:
    PIE-CPU INT FLOW.png-53.9kB

  2. 以定时器0、定时器1 的中断为例,试比较PIE级中断与CPU 级中断的异同?
    TMS320F2812片内有3个32位通用定时器、这些定时器有一个32位计数器,当计数器递减计数到0时,产生一个中断,其中TIMER0中断为PIE中断,TIMER1中断直接连到CPU的INT13。

    • 同:

      1. 都有标志位和使能位,且都要先后经过标志位和使能位的判定来判断是否有中断响应;
      2. 跳转至ISR执行中断服务程序的流程是一样的,并在跳转至中断服务程序前清除中断标志,保护现场,中断服务程序结束后重新使能PIE中断和CPU中断,这才中断返回。
    • 异:

      1. F281x支持96个独立的外设中断,他们每8个一组,复用为一组PIE级中断输入,复用一个CPU级中断。这样的PIE组有12个。
      2. PIE和CPU级中断有一个先后串联的关系,PIE中断要递交到CPU中断级处理,CPU级中断被禁止的话,对应PIE中断将无法响应,而改变下级PIE的标志位或使能位却不会对CPU造成影响;
      3. 控制位存在区别,PIE级对应PIEIFRx.y/PIEIERx.y,CPU级对应IERx/IFRy,且每组PIE级中断多一个确认位PIEACKx。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注