3612|18

103

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于MSP430f2418定时器B0的问题 [复制链接]

编程的时候遇到了一个问题,我写了如下两句话
TBCCTL0 &= ~CCIFG;
TBCCTL0 |= CCIE;
但是在TBCCR0的中断向量处没有放置中断函数,结果每执行一次上面的两句话,系统就复位一次。
当我在中断向量处放置一个中断函数,里面什么也不执行。每执行一次上面的两句话, 系统不再复位了,只是会跳到中断函数里。
为什么会出现这两种现象呢?
我想是不是TBCCR0在上电之后就初始化为0,所以打开定时器B比较器0的中断之后,中断马上就执行了。如果没有放置中断函数,那么程序跳到中断向量处没法返回,程序跑飞了,所以就复位了(但是我没有打开看门狗)
如果放置了中断函数,那么程序还能返回,所以不会复位。
上面也是我瞎猜的,不知道我上面的理解是否正确???

最新回复

恩恩,受教了,我记住了,谢谢。  详情 回复 发表于 2015-9-17 22:45
 
点赞 关注

回复
举报

396

帖子

5

TA的资源

纯净的硅(中级)

沙发
 
有想法就去实践。
 
个人签名一别四五年,变化万千。https://home.eeworld.com.cn/static/image/smiley/comcom/5.gif[/img]
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

板凳
 
其实我在想楼主如果写如下这两句语句的时候
TBCCTL0 &= ~CCIFG;
TBCCTL0 |= CCIE;
为什么不直接写成一条语句:TBCCTL0 = CCIE + CCIFG呢?
还有这些我记得都是在main函数中的呀。中断服务函数是单独写在外面的,不知道楼主是怎样写的。

点评

你一合并,就不一样了  详情 回复 发表于 2015-9-17 07:54
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

4
 
应该是这个原因,程序找不到中断入口,不过应该会跑飞啊,为啥会复位呢

点评

没用使用的flash空间默认是ffff的。 中断向量的ffff地址貌似是复位中断,不知道是不是这个原因。。。  详情 回复 发表于 2015-9-17 15:40
我觉得也许是这样的,中断信号到来之后,程序计数器指向中断向量的地址,但是没有中断函数,所以程序就无法返回了(我猜测RETI这条命令只有放置了中断函数之后才会产生)。然后程序就跑飞了  详情 回复 发表于 2015-9-17 09:15
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

5
 
huaiqiao 发表于 2015-9-16 15:28
其实我在想楼主如果写如下这两句语句的时候
TBCCTL0 &= ~CCIFG;
TBCCTL0 |= CCIE;
为什么不直接写成一 ...

你一合并,就不一样了

点评

是的一样,我觉得反正是同一个寄存器,写成一条好看一些。  详情 回复 发表于 2015-9-17 08:41
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

6
 
数码小叶 发表于 2015-9-17 07:54
你一合并,就不一样了

是的一样,我觉得反正是同一个寄存器,写成一条好看一些。

点评

说了不一样,你仔细看  详情 回复 发表于 2015-9-17 11:10
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

7
 
数码小叶 发表于 2015-9-17 07:53
应该是这个原因,程序找不到中断入口,不过应该会跑飞啊,为啥会复位呢

我觉得也许是这样的,中断信号到来之后,程序计数器指向中断向量的地址,但是没有中断函数,所以程序就无法返回了(我猜测RETI这条命令只有放置了中断函数之后才会产生)。然后程序就跑飞了

点评

关键你说的是复位,不是跑飞,跑飞很正常,复位就想不通了  详情 回复 发表于 2015-9-17 11:11
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

8
 
我将串口接收中断打开,但是不放置中断函数。只要有串口接收到数据,也出现了 同样的现象。有不有人试过在其他的单片机上是不是也有同样的现象呢?
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

9
 
huaiqiao 发表于 2015-9-17 08:41
是的一样,我觉得反正是同一个寄存器,写成一条好看一些。

说了不一样,你仔细看

点评

呵呵,小叶我这个没有用户手册,我看了下其他型号的。他写的那两条语句不就是将TBCCTL0这个寄存器所在的那两个位,做置位操作吗  详情 回复 发表于 2015-9-17 14:58
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

10
 
adam_zhang41 发表于 2015-9-17 09:15
我觉得也许是这样的,中断信号到来之后,程序计数器指向中断向量的地址,但是没有中断函数,所以程序就无 ...

关键你说的是复位,不是跑飞,跑飞很正常,复位就想不通了
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

11
 
数码小叶 发表于 2015-9-17 11:10
说了不一样,你仔细看

呵呵,小叶我这个没有用户手册,我看了下其他型号的。他写的那两条语句不就是将TBCCTL0这个寄存器所在的那两个位,做置位操作吗

点评

一个写1一个写0,能一样吗? 我又歪楼了……  详情 回复 发表于 2015-9-17 15:33
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

12
 
huaiqiao 发表于 2015-9-17 14:58
呵呵,小叶我这个没有用户手册,我看了下其他型号的。他写的那两条语句不就是将TBCCTL0这个寄存器所在的 ...

一个写1一个写0,能一样吗?
我又歪楼了……

点评

没有歪楼。我不是说了吗我没有看他的用户手册,但是我看了下另外一个型号的片子,TBCCTLx这个寄存器CCIFG,CCIE初始值确实都是0CCIFG位,写1,CCIE位,写0。 结论,是我看错啦。qiushenghua[/backcolor] 威武。[att  详情 回复 发表于 2015-9-17 16:54
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

13
 
你的猜想是有道理的,写一个空的中断函数试试!
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

14
 
数码小叶 发表于 2015-9-17 07:53
应该是这个原因,程序找不到中断入口,不过应该会跑飞啊,为啥会复位呢

没用使用的flash空间默认是ffff的。
中断向量的ffff地址貌似是复位中断,不知道是不是这个原因。。。

点评

不知道楼主咋判断跑飞还是复位的,乱了  详情 回复 发表于 2015-9-17 16:27
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

15
 
qiushenghua 发表于 2015-9-17 15:40
没用使用的flash空间默认是ffff的。
中断向量的ffff地址貌似是复位中断,不知道是不是这个原因。。。

不知道楼主咋判断跑飞还是复位的,乱了

点评

很有可能是从现象判断的,比如某条在程序周期只会运行一次的语句,重复运行了。 不过跑飞也可能带来这样的效果,所以楼主的判断还有待验证。  详情 回复 发表于 2015-9-17 22:41
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

16
 
qiushenghua 发表于 2015-9-17 15:33
一个写1一个写0,能一样吗?
我又歪楼了……

没有歪楼。我不是说了吗我没有看他的用户手册,但是我看了下另外一个型号的片子,TBCCTLx这个寄存器CCIFG,CCIE初始值确实都是0CCIFG位,写1,CCIE位,写0。
结论,是我看错啦。qiushenghua 威武。

点评

不看用户手册就知道你看错了。 楼主的两条语句一条写1一条清0,所以是不能合并的。 你在解答楼主问题的时候急着去翻手册,而没有去分析楼主的代码,就有可能会忽视一些东西。  详情 回复 发表于 2015-9-17 22:39
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

17
 
huaiqiao 发表于 2015-9-17 16:54
没有歪楼。我不是说了吗我没有看他的用户手册,但是我看了下另外一个型号的片子,TBCCTLx这个寄存器CCIFG ...

不看用户手册就知道你看错了。
楼主的两条语句一条写1一条清0,所以是不能合并的。
你在解答楼主问题的时候急着去翻手册,而没有去分析楼主的代码,就有可能会忽视一些东西。

点评

恩恩,受教了,我记住了,谢谢。  详情 回复 发表于 2015-9-17 22:45
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

18
 
数码小叶 发表于 2015-9-17 16:27
不知道楼主咋判断跑飞还是复位的,乱了

很有可能是从现象判断的,比如某条在程序周期只会运行一次的语句,重复运行了。
不过跑飞也可能带来这样的效果,所以楼主的判断还有待验证。
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

19
 
qiushenghua 发表于 2015-9-17 22:39
不看用户手册就知道你看错了。
楼主的两条语句一条写1一条清0,所以是不能合并的。
你在解答楼主问题的 ...

恩恩,受教了,我记住了,谢谢。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表