打印
[DSP编程]

对T2通用定时器编程,进不了中断求大神指点出现的问题

[复制链接]
1089|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宁枫|  楼主 | 2019-12-25 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EV初始化
void InitEv(void)
{
    EvaRegs.T2CON.bit.TMODE=2;        //连续增模式
    EvaRegs.T2CON.bit.TCLKS10=0;      //使用内部时钟,T1CLK
    EvaRegs.T2CON.bit.TPS=2;          //T1CLK=HSPCLK/4=18.75M
    EvaRegs.T2CON.bit.TENABLE=0;      //暂时禁止T1计数
    EvaRegs.T2PR=0x493E;              //周期为1ms

    EvaRegs.EVAIMRB.bit.T2PINT=1;   //使能定时器T2的周期中断
    EvaRegs.EVAIFRB.bit.T2PINT=1;   //清除定时器T2的周期中断标志位
/////在这里我使能了周期中断///////////////
}

使用特权

评论回复

相关帖子

来自 2楼
宁枫|  楼主 | 2019-12-30 22:09 | 只看该作者
问题解决了是因为没有使能CPU中断,受了前面写程序时的影响。我用的T2定时器的周期中断,需要使能INT3,即INT= 0x4.  我错在了IER|=M_INT1;   IER|=M_INT2;//开CPU中断,他们是宏定义只打开了INT1和INT2。我需要改为使能CPU中断
   INT = 0x4;

使用特权

评论回复
板凳
宁枫|  楼主 | 2019-12-25 22:40 | 只看该作者
这是中断函数
interrupt void T2PINT_ISR(void)     //通用定时器2的周期中断
{
    if (i == 1000)
        {
            i=0;
        }
   i++;
   PieCtrl.PIEACK.bit.ACK3=1;    //响应PIE同组中断
   EvaRegs.EVAIFRB.bit.T2PINT=1; //清除T2周期中断的标志位
   EINT;                         //使能全局中断

}

使用特权

评论回复
地板
宁枫|  楼主 | 2019-12-25 22:41 | 只看该作者
void main(void)
{

    InitSysCtrl();  //初始化系统函数

    DINT;           //关闭全局中断
    IER = 0x0000;   //禁止CPU中断
    IFR = 0x0000;   //清除CPU中断标志

    InitPieCtrl();  //初始化PIE控制寄存器

    InitPieVectTable();  //初始化PIE中断向量表

    InitGpio();          //初始化GPIO口

    InitEv();            //初始化EV
    //使能PIE中断

    PieCtrl.PIEIER3.bit.INTx1 = 1;  //使能PIE模块中的T2周期中断

    IER|=M_INT1;  //开CPU中断
    IER|=M_INT2;

    EINT;  //使能全局中断
    ERTM;  //
使能实时中断

    EvaRegs.T2CON.bit.TENABLE=1;      //使能定时器T2计数操作

    while(1)
        {


        }

}


使用特权

评论回复
5
zuoanhuafeng| | 2019-12-26 08:37 | 只看该作者
中断向量表中有无T2PINT_ISR?

使用特权

评论回复
评论
宁枫 2019-12-26 10:04 回复TA
有的,这是初始化向量表中对他的初始化 // PIE 组3向量 T2PINT_ISR, // 通用定时器2周期中断 T2CINT_ISR, // 通用定时器2比较中断 T2UFINT_ISR, // 通用定时器2下溢中断 T2OFINT_ISR, // 通用定时器2上溢中断 CAPINT1_ISR, // 捕获单元1捕获中断 CAPINT2_ISR, // 捕获单元2捕获中断 CAPINT3_ISR, // 捕获单元3捕获中断 rsvd_ISR, 
6
宁枫|  楼主 | 2019-12-26 10:31 | 只看该作者
本帖最后由 宁枫 于 2019-12-26 10:35 编辑

使用特权

评论回复
7
宁枫|  楼主 | 2019-12-26 10:34 | 只看该作者

T2的计数器正常计数,是可以产生中断事件的

微信图片_20191226102938.png (19.02 KB )

微信图片_20191226102938.png

使用特权

评论回复
8
宁枫|  楼主 | 2019-12-26 10:37 | 只看该作者
这是我的源程序,希望不吝赐教,必洗耳恭听

Timer2.zip

144.18 KB

使用特权

评论回复
9
zhangmangui| | 2019-12-30 23:09 | 只看该作者
这一点代码根本看不出问题

使用特权

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

本版积分规则

1

主题

8

帖子

0

粉丝