|
各位大虾,小弟新学DSP,在用定时器0中断点灯过程中出现了一个很诡异的现象,求各位指正。
我的输出口是GPIOA0,主程序和中断程序如下:
#include "DSP28_Device.h"
void InitGpio(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=0;
GpioMuxRegs.GPADIR.bit.GPIOA0=1;
GpioDataRegs.GPASET.bit.GPIOA0=1;
// 在这里插入初始化函数的代码
EDIS;
}
#include"DSP28_Device.h"
void main(void)
{
InitSysCtrl(); //初始化系统函数
DINT; //禁止和清除所有CPU中断
IER=0x0000; //禁止CPU中断
IFR=0x0000; //清除CPU中断标志
InitPieCtrl(); //初始化PIE控制寄存器
InitPieVectTable(); //初始化PIE中断向量表
InitPeripherals(); //初始化CPU定时器模块
InitGpio(); //初始化GPIO
PieCtrl.PIEIER1.bit.INTx7=1; //使能PIE模块中的CPU定时器0中断
IER|=M_INT1; //开CPU中断1
EINT; //使能全局中断
ERTM;//使能实时中断
ConfigCpuTimer(&CpuTimer0,150,1000000);//cpu定时器0的周期为1S
StartCpuTimer0(); //启动CPU定时器0
while(1)
{}
}
interrupt void TINT0_ISR(void) // CPU-Timer0中断函数
{
CpuTimer0.InterruptCount++;
if(CpuTimer0.InterruptCount==1)
{
GpioDataRegs.GPACLEAR.bit.GPIOA0=1;
}
if(CpuTimer0.InterruptCount==2)
{
GpioDataRegs.GPASET.bit.GPIOA0=1;
CpuTimer0.InterruptCount=0;
}
CpuTimer0Regs.TCR.bit.TIF=1;
PieCtrl.PIEACK.bit.ACK1=1;
EINT;
}
程序编译以后,下载执行老是灯处以亮的状态,不闪烁,但是在CCS3.3打开另外一个例程以后再来编译,诡异的事情发生了,同一个程序,这时候灯开始闪了。关掉CCS3.3以后
再打开这个工程,编译,尽然又是不闪!关掉ccs打开例程,灯是闪的。这时候再打开这个工程,灯竟然闪了!我怀疑是CMD文件或者是库文件的问题,对比两者的文件,没有发现
问题,到底出了什么问题?是我的设置问题吗?还是程序问题?
程序如附件所示。谢谢各位大虾
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|