微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 定时器中断调试

定时器中断调试

时间:10-02 整理:3721RD 点击:
       最近学习了C6655的定时器和中断硬件模块,编写了一个用定时器定时1ms,通过调整基数变量的值来控制LED的亮灭。      首先,简单总结一下C6000定时器。
        1.该定时器最大可支持64位时钟计数,通过Timer Global Control Register (TGCR)寄存器中的TIMMODE位来选择控制模式,主要包括四种模式:64位通用定时模式、双32位非链式通用定时器模式、双32位链式定时器模式和看门狗定时器模式。
       2.可选择两种时钟源,包括内部时钟和外部时钟。
       3.可选择三种工作模式:一次工作、持续工作和周期性重载工作模式。
       操作流程:
      首先选择合适的时钟源,通过寄存器来配置合适的计数频率,然后选择工作模式。其次,计数寄存器的值在计数时钟更新之后加1,当计数值与装载的计数周期相等时,就会触发中断。最后,通过影子寄存器重载计数周期,继续同样计数流程。下图是64位通用定时器工作流程。


实验代码:
#include "KeyStone_common.h"
#define PIN_CONTROL_0       0x02620580
#define CLOCK_PERIOD_MS                 1   //period (in millisecond) of the clock generated by timer
#define NUM_CLOCKS_GENERATED         500 //number of the clocks generated in this test
volatile Uint32 uiTick = 0;
void Timer_Interrupts_Init(void)
{
        /**中断源选择**/
        gpCGEM_regs->INTMUX1 = 0;
        gpCGEM_regs->INTMUX2 = 0;
        gpCGEM_regs->INTMUX3 = CSL_GEM_TINTLN EVTCLR[0]=         0xFFFFFFFF;
        gpCGEM_regs->EVTCLR[1]=         0xFFFFFFFF;
        gpCGEM_regs->EVTCLR[2]=         0xFFFFFFFF;
        gpCGEM_regs->EVTCLR[3]=         0xFFFFFFFF;
        ICR= IFR;                        //清楚中断标志
        IER = IER|(1 BANK_REGISTERS[0].DIR &= ~((1 BANK_REGISTERS[0].CLR_DATA |= (1 BANK_REGISTERS[0].CLR_DATA |= (1 BANK_REGISTERS[0].SET_DATA |= (1 1000) && (uiTick BANK_REGISTERS[0].CLR_DATA |= (1 2000)
                {
                        uiTick = 0;
                }
        }
}
实验结果,试用版底板上的D3灯会以2s周期性的亮灭。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top