TI中文支持网
TI专业的中文技术问题搜集分享网站

使用timmer的定时器无法进入第二次中断程序

本人在编写用定时器控制单片机中断20次的实验中,发现无法进入第二次中断,进入第一次中断后就一直在while循环,也清除了标志位,麻烦大神帮看一下5415.timers.c

Susan Yang:

我会在测试后给您回复

user6387523:

回复 Susan Yang:

谢谢!这是整个工程文件timers.zip

Susan Yang:

回复 user6387523:

另外在您的代码中使用的是timer0B(Timer0IntHandler),但是在startup_ccs.c中,

Timer0IntHandler,// Timer 0 subtimer AIntDefaultHandler,// Timer 0 subtimer B

您需要改为

IntDefaultHandler,// Timer 0 subtimer A
Timer0IntHandler,// Timer 0 subtimer B

user6387523:

回复 Susan Yang:

感谢你的回复,现在我还有几个问题,请您再帮我看一下
1.我在编译的过程中无法使用Timer0BIntHandler这个函数,只能使用Timer0IntHandler,如果使用就会出现
Error[Pe020]: identifier "Timer0BIntHandler" is undefined C:\ti\TivaWare_C_Series-2.0.1.11577\examples\boards\dk-tm4c129x\timers\timers.c 126 之前是Timer0IntHandle也无法使用,我在timer.h文件中定义了一下就可以用了,但只能定义成这样void Timer0IntHandler(void)如果定义成void Timer0BIntHandler(void)就依旧无法使用
2.你在文章下面的提醒我看了,在之前自己调试的时候就已经把subtimer改过了不过是在startup_ewarm.c中工程文件里不包含startup_ccs.c
3.最后调试运行的时候输出为什么是999,如果按照程序的话应该是依次输出中断编号num1num2num3。。。这样的,会不会是中断时间太短的缘故
谢谢!!

Susan Yang:

回复 user6387523:

1 这个是因为您没有定义Timer0BIntHandler,您需要在startup_ccs.c内 extern void Timer0BIntHandler(void);

2 这个可能是123和129之间工程的区别,我回头看一下

3 显示如下UARTprintf("Number of interrupts: %d\r", g_ui32Counter);

就应该显示Number of interrupts: 999

g_ui32Counter 是uint32类型的数据,总共设定中断次数是1000,即 0-999,所以最后会显示999

user6387523:

回复 Susan Yang:

 谢谢!Timer0BIntHandler的定义问题已经解决了我通过修改ewarm里文件的定义,ewarm和ccs文件内容上都是一样的,可能是编译器不同的问题,我用的是iar编译器。

不过修改过后我的程序还是停留在Number of interrupts : 1这里

另外不应该是每中断一次printf一次吗就像图片里这样,我的文件就是根据这个教程编写的,也不知哪里出错了,第二次中断还是进不去

user6387523:

回复 Susan Yang:

你好,方便的话能您能把测试的整个工程文件发给我吗,IAR版的最好,谢谢!!

user6387523:

回复 Susan Yang:

好的,谢谢,我前面一个问题还望回复一下~

赞(0)
未经允许不得转载:TI中文支持网 » 使用timmer的定时器无法进入第二次中断程序
分享到: 更多 (0)