DSP28335 使用外中断 程序单步运行可以 全速运行就进不了外中断或者跑飞是什么原因
有哪位用过的分享一下使用经验 非常感谢
interrupt void SEQ2INT_ISR(void) //SEQ2 ADC
{
// Insert ISR Code here
// To receive more interrupts from this PIE group, acknowledge this interrupt
// PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
asm(" ESTOP0");
for(;;);
}中了
我的外中断程序的设置都是没有问题的,我的程序比较长,所以我单把我的外部中断程序拿出来测试了一下 发现没有问题,但是在我的整个大的程序中,每次点击 run 想要全速运行的时候 ,就只进入一次外部中断 ,其余时间不进入外中断。
有没有给点建议 这是什么原因造成的,还有就是我的程序先运行一个小的定时器程序后,在关闭这个定时器程序,那么再运行我的这个大的程序就能全速运行了,这是什么原因呢? 有人说是电源芯片的问题,但我觉得硬件都很正常啊 希望给点建议,多谢了。
void main(void)
{
InitSysCtrl();
InitCpuTimers();
/*****************************/
/*第二步:I/O设置 */
/*****************************/
InitGpio();
InitXintf();
// 全配置为通用I/O
DINT;
InitPieCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.XINT1 = &ISRExint3;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx4= 1;
IER |= M_INT1;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
InitScibGpio();
// scib_init();
/*****************************/
/*第六步:用户程序 */
/*****************************/
// 省略了中间的变量的声明部分
/*****************************/
/*主循环函数开始 */
/*****************************/
while(1)
{
EXINTSHIYAN=GpioDataRegs.GPBDAT.bit.GPIO43;
GpioDataRegs.GPBDAT.bit.GPIO44=EXINTSHIYAN;
}
}
interrupt void ISRExint3(void)
{
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
上面是我的外部中断的程序 用的外部中断1 下面是是定时器的程序 其中变量的声明我没写 我程序的内容也没写 主要写的配置部分 应该都是正确的 单独运行这样的小程序 运行都是成功地 但是 当把这些程序放到我的大的程序当中的时候就只进入一次中断,但是 如果先运行我的下面的这个定时器程序 然后再关闭的话 我的大程序就能全速顺利运行 这是什么原因呢
下面是我的定时器中断的小程序
#include "DSP28x_Project.h"
interrupt void ISRTimer0(void);
void main(void)
{
/*****************************/
/*第一步:时钟设置 */
/*****************************/
InitSysCtrl();
/*第二步:I/O设置 */
/*****************************/
InitGpio();
/*第三步:中断和定时器设置 */
/*****************************/
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.TINT0 = &ISRTimer0;
EDIS;
// Step 4. Initialize the Device Peripheral. This function can be
InitCpuTimers();
ConfigCpuTimer(&CpuTimer0, 150, 500000);
StartCpuTimer0();
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
IER |= M_INT1;
EINT; // Enable Global interrupt INTM
ERTM;
InitXintf();
while ( 1 )
{
}
}
interrupt void ISRTimer0(void)
{
CpuTimer0.InterruptCount++;
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
CpuTimer0Regs.TCR.bit.TIF=1;
CpuTimer0Regs.TCR.bit.TRB=1;
}
能解释下 为什么 只有运行了这个定时器程序之后我的大的程序才能顺利运行吗 如果直接运行我的大的程序就会只进入一次外部中断 或者跑飞 ,或者这个定时器中断程序会影响硬件设置 然后我的大的程序就能顺利运行 ??????????
1)恩 我的定时器程序和这个大的程序的确是两个工程 但是现在的情况是 我只打开我的大的程序 运行就只能运行一次 然后现在的情况是 要么不进入外部中断程序 要么程序运行一次之后 整个程序都不运行了 main 函数里面放个断点 都看不到程序运行 ,你觉得定时器程序会不会影响硬件 然后再影响我的程序的运行,比如时钟电源的稳定之类的,我觉得有点扯。
2)我用的是 GPIO 31 ,那个设置是在GPIO.C里面设置的 ,这个 43 和44 引脚是用作别的用途的
我并没有用 SEQ1INT(ADC) 或者SEQ2INT(ADC)这两个中断啊 ,程序有时候就进入到这里面
我大的程序里面没有用到这些中断 , 我也没有专门设置这些中断怎么能进入呢 你看我的程序中有
PieCtrlRegs.PIEIER1.bit.INTx4= 1;
并没有设置
PieCtrlRegs.PIEIER1.bit.INTx1= 1;
PieCtrlRegs.PIEIER1.bit.INTx2= 1; 呀 我所有的程序中都没有上面两条语句 怎么会进入到这两个中断中去呢
的 这句
LB wd_disable ;Branch to watchdog disable code 中来 是什么原因 ???
我的大的程序好像没有运行 我点击暂停 程序就进入到这个看门狗禁止的这条语句 或者 程序自己跳到这里来 什么原因 ?
我发现 我的程序有的时候 进入到
interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP
{
有的时候是进入到
interrupt void SEQ1INT_ISR(void) //SEQ1 ADC
{
// Insert ISR Code here
// To receive more interrupts from this PIE group, acknowledge this interrupt
// PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
asm (" ESTOP0");
for(;;);
}
或者
// INT1.2
interrupt void SEQ2INT_ISR(void) //SEQ2 ADC
{
// Insert ISR Code here
// To receive more interrupts from this PIE group, acknowledge this interrupt
// PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
asm(" ESTOP0");
for(;;);
}
为什么程序会跳到这些中断里面去 有没有可能是硬件的问题 比如片中本身中断系统的问题呢 ?
有奖活动 | |
---|---|
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! |
打赏帖 | |
---|---|
如何实现基于NXPiMX.RT1021的BH1730采集被打赏50分 | |
【换取手持数字示波器】AHT10温度检测分享被打赏40分 | |
【换取手持数字示波器】ACM32F070开发板点亮LCD屏和触控按键,串口,ADC被打赏40分 | |
【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享被打赏40分 | |
【换取手持数字示波器】国民技术PWM功能知识分享被打赏40分 | |
【换取手持数字示波器】放大器运放知识分享被打赏40分 | |
【分享评测,赢取加热台】+开关电源AC输入知识分享被打赏30分 | |
【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC被打赏40分 | |
老胖子聊电路--分析一个反馈电路被打赏50分 | |
【换取手持数字示波器】+点亮WS2812RGB灯被打赏50分 |