发新帖本帖赏金 2.33元(功能说明)我要提问
123下一页
返回列表
打印

定时中断死循环,求助?

[复制链接]
4103|44
手机看帖
扫描二维码
随时随地手机跟帖
沙发
suolong|  楼主 | 2017-6-15 10:12 | 只看该作者
这是定时中断程序。

QQ截图20170615094344.png (23.38 KB )

QQ截图20170615094344.png

使用特权

评论回复
板凳
suolong|  楼主 | 2017-6-15 10:14 | 只看该作者
初始化
void TIMER0_INIT(void)
{
        SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);//使能TIMER0
        //TimerConfigure(TIMER0_BASE, TIMER_CFG_ONE_SHOT);//单次计数模式
        //TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC_UP);//周期性计数模式,递增计数
        //TimerConfigure(TIMER0_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODIC);
        TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);//周期性计数模式
        TimerLoadSet(TIMER0_BASE, TIMER_A,SysCtlClockGet() /12800);
        //TimerADCEventSet(TIMER0_BASE,TIMER_ADC_TIMEOUT_A);//超时触发采样设置
        TimerControlTrigger(TIMER0_BASE,TIMER_A,true);
        //TimerADCEventGet(TIMER0_BASE);//获取是否超时触发ADC
        IntEnable(INT_TIMER0A);//TIMEOUT标志位触发中断
        IntPrioritySet(INT_TIMER0A,1);//优先级1
        TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); //使能TIMER0A中断
        IntMasterEnable();
        TimerEnable(TIMER0_BASE, TIMER_A);//TIMER0A开始计数,当计数值等于TimerLoadSet,触发中断
}

使用特权

评论回复
地板
suolong|  楼主 | 2017-6-15 10:15 | 只看该作者
调试一下就死了,求助大神@xyz549040622 @dirtwillfly

QQ截图20170615094355.png (23.05 KB )

QQ截图20170615094355.png

使用特权

评论回复
5
dirtwillfly| | 2017-6-15 11:52 | 只看该作者
mcu型号是哪个?

使用特权

评论回复
6
suolong|  楼主 | 2017-6-15 12:36 | 只看该作者

TM4C123的,这个和MUC型号还有关系?

使用特权

评论回复
7
ckc| | 2017-6-15 12:38 | 只看该作者
timeintclear是做什么的?
中断函数里调用别的函数要慎重

使用特权

评论回复
8
suolong|  楼主 | 2017-6-15 12:46 | 只看该作者
ckc 发表于 2017-6-15 12:38
timeintclear是做什么的?
中断函数里调用别的函数要慎重

没有调用啊,中断源清除。如果中断中调用函数,会有什么影响?

使用特权

评论回复
9
xyz549040622| | 2017-6-15 14:55 | 只看该作者
1.你的中断不反回事什么意思
2.中断在启动文件中申明了没有
3.你的中断函数进去了没
4.你的这个timer0count太大了吧,要达到真是需要一定时间的。

使用特权

评论回复
10
suolong|  楼主 | 2017-6-15 16:44 | 只看该作者
xyz549040622 发表于 2017-6-15 14:55
1.你的中断不反回事什么意思
2.中断在启动文件中申明了没有
3.你的中断函数进去了没

大神就是,不一样,中断函数应该是进去了,启动文件也申明了,我最后把主程序中的delay程序,说是丢失了,一直死循环,我把那部分去掉了,就好了。

使用特权

评论回复
11
suolong|  楼主 | 2017-6-15 17:01 | 只看该作者
1.  //设置系统时钟为40MHz(400/2.5/4=40)
        SysCtlClockSet(SYSCTL_SYSDIV_1 |SYSCTL_USE_PLL|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
我想问一下,这句系统时钟设置:倍频都400MHZ,然后在分频,我这里分频系数是1,难道时钟就是400MHz,还是要除2,在除25是16MHZ;我搞不懂这个时钟是怎么设置的。
还有为什么我看SysCtlClockSet的值是这样的。十进制是7000多?SysCtlClockGet也是7740?为什么是这个值?
2.        TimerLoadSet(TIMER0_BASE, TIMER_A,SysCtlClockGet() / 12800);这个12800,也就是timer0count,这个值是怎么算的?系统时钟除12800?如果系统时钟是16MHZ,就是1秒钟计数16M/12800次?
还没毕业的实习小白,可能问题比较简单。@xyz549040622

QQ图片20170615165014_看图王.png (150.79 KB )

QQ图片20170615165014_看图王.png

使用特权

评论回复
12
dirtwillfly| | 2017-6-15 17:29 | 只看该作者
suolong 发表于 2017-6-15 12:36
TM4C123的,这个和MUC型号还有关系?

不同系列的mcu调用的库函数都是不同的,比如msp与tiva

使用特权

评论回复
13
dirtwillfly| | 2017-6-15 17:31 | 只看该作者
suolong 发表于 2017-6-15 16:44
大神就是,不一样,中断函数应该是进去了,启动文件也申明了,我最后把主程序中的delay程序,说是丢失了 ...

能否提供下完整的程序?

使用特权

评论回复
14
suolong|  楼主 | 2017-6-15 17:43 | 只看该作者
dirtwillfly 发表于 2017-6-15 17:31
能否提供下完整的程序?

灰哥,刚加了你的2群,问个问题都没人回,好尴尬。刚刚那个问题解决了,在搞别的问题了。用定时器触发采样,论坛里有人写过一帖子,不知道为什么我照着试没用。很困惑。

使用特权

评论回复
15
xyz549040622| | 2017-6-15 21:30 | 只看该作者
suolong 发表于 2017-6-15 17:43
灰哥,刚加了你的2群,问个问题都没人回,好尴尬。刚刚那个问题解决了,在搞别的问题了。用定时器触发采 ...

使用特权

评论回复
16
suolong|  楼主 | 2017-6-15 21:33 | 只看该作者

别这样,大神,求助呀

使用特权

评论回复
17
suolong|  楼主 | 2017-6-15 21:36 | 只看该作者
不知道为什么,我现在死活进不了ADC中断,很无语啊。
1.启动中申明了;
2.初始化了;
3.触发了;@dirtwillfly @xyz549040622

3.png (17.69 KB )

3.png

2.png (78.55 KB )

2.png

1.png (17.68 KB )

1.png

使用特权

评论回复
18
quickman| | 2017-6-15 22:36 | 只看该作者
中断不能执行吗?

使用特权

评论回复
19
jstgotodo| | 2017-6-15 22:36 | 只看该作者
suolong 发表于 2017-6-15 10:12
这是定时中断程序。

后面的函数执行了吗

使用特权

评论回复
20
iamaiqiyi| | 2017-6-15 22:37 | 只看该作者
中断不能够退出吗?

使用特权

评论回复
发新帖 本帖赏金 2.33元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

69

帖子

0

粉丝