[DSP编程]

283335同一程序的外部中断,执行时间不同

[复制链接]
609|3
手机看帖
扫描二维码
随时随地手机跟帖
L1BB|  楼主 | 2019-11-12 09:02 | 显示全部楼层 |阅读模式
上面两张图是我用示波器两次截取在外部中断3中翻转0口电平的波形,程序是35口采样方波,上升沿触发外部中断3。我用的是同样的程序,我确定一点都没有修改。我做了10次实验,8次是和图1一样的波形,延时500ns,2次和图2一样,延时1us多。我不知道为什么这样。

下面贴上主程序、外部中断3的服务程序和外部中断配置程序

void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();

InitExInt();
configtestled();
LED1=0; //初始化LED电平

EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT3 = &ISRExint3; // 将外部中断添加都中断向量表里
EDIS; // This is needed to disable write to EALLOW protected registers
IER |= M_INT12; //使能第一组中断
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //使能总中断
PieCtrlRegs.PIEIER12.bit.INTx1= 1; //使能第12组中断里的第1个中断--XINT3中断
EINT; // 中断使能
ERTM; // 使能总实时中断

while(1);
}
/**********************************************************************************************/
interrupt void ISRExint3(void)
{
LED1 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//0x0001赋给12组中断ACKnowledge寄存器,对其全部清除,不接受其他中断
}
void InitExInt(void) //外部中断的配置
{
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 0; // GPIO35复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO35= 0; // GPIO35设置为输入
GpioCtrlRegs.GPBQSEL1.bit.GPIO35= 0; // GPIO35量化寄存器配置为0
GpioCtrlRegs.GPBPUD.bit.GPIO35 = 1;//禁止上拉
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 35;//选择GPIO35为外部输入XINT3输入引脚
XIntruptRegs.XINT3CR.bit.POLARITY= 1; //1:上升沿//0:下降沿触发中断
XIntruptRegs.XINT3CR.bit.ENABLE = 1; //使能XINT3中断
EDIS;
}

图1

图1

图2

图2

使用特权

评论回复

相关帖子

zeshoufx| | 2019-11-12 10:06 | 显示全部楼层
谢谢分享,,,,,,,,,,,,,,

使用特权

评论回复
L1BB|  楼主 | 2019-11-12 11:37 | 显示全部楼层
zeshoufx 发表于 2019-11-12 10:06
谢谢分享,,,,,,,,,,,,,,

你也太水了...

使用特权

评论回复
zhangmangui| | 2019-11-12 23:07 | 显示全部楼层
程序是不是还有其他中断啊    如果只是这一个动作的话  不应该出现时间不等的问题

使用特权

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

本版积分规则

3

主题

19

帖子

0

粉丝