OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9585|回复: 5

定时器4中断的问题,请教原子哥

[复制链接]

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
发表于 2012-8-2 11:25:09 | 显示全部楼层 |阅读模式
不是定时器的问题。而是,我在初始化ADXL345之前会先读ID,如果ID错误则不初始化传感器。 也就是StatusDetec = Acc_init未被执行。所以定时器没有在10次中断后关闭

最近使用定时器4,发现一个奇怪的问题。我使用定时器4,在程序初始化是读取ADXL345的三轴加速度。取10个值在求平均,作为初始加速度。是中断10次关闭定时器


可是,几乎每两次复位后,就有一次程序异常
程序是这样子的
其中 #define DisabletheTimer TIM4->CR1&=0XFE;//失能定时器
在初始化ADXL345时,有 StatusDetec = Acc_init;

void Status_Init(void) //采样用
{
 u8 i;
 s16 Acceler_init[3];//当前加速度
 static u8 counter = 0;
 if(counter<10){
  counter++;
  Multi_Read(DATAX0,6);
  for(i=0;i<3;i++){
   Acceler_init = data_reg[2*i+1];
   Acceler_init = (Acceler_init<<8)|data_reg[2*i];//单轴加速度
   InitialStatus += Acceler_init;//Δ 
  }
 }
 else{
  for(i=0;i<3;i++){
   InitialStatus /= 10; 
  }
  StatusDetec = Start; //初始状态
  counter = 0;
  DisabletheTimer //关闭定时器4 
 }  
}

void TIM4_IRQHandler(void)//中断服务
{
 if(TIM4->SR&0X0001){
 Aout(8) = !PAout(8);
  if(StatusDetec == Acc_init){//获取初始坐标
   Status_Init();
  }
  else{ 
   Counter_detec();
  }
 } 
 TIM4->SR&=~(1<<0);
}

所谓的异常就是PAout(8)取反次数超过10次后依旧不停的取反。似乎没有停下来的意思
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-2 11:57:30 | 显示全部楼层
JTAG跟踪一下,看看:
DisabletheTimer //关闭定时器4

是否真正有执行?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

158

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
400
金钱
400
注册时间
2011-11-23
在线时间
0 小时
发表于 2012-8-2 15:22:21 | 显示全部楼层
取10个值在求平均,
TIM4->CR1&=0XFE;每一次你进入中断取值的时候其实默认把CR1的最低位给关了,建议没读完一次数据的时候,使能定时器4
回复 支持 反对

使用道具 举报

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
 楼主| 发表于 2012-8-2 16:11:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
有被执行的。试了几十次,也有几次有问题。有时侯,鼠标点快点点,有时候点慢点。快点的时候偶尔有问题
回复 支持 反对

使用道具 举报

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
 楼主| 发表于 2012-8-2 16:27:38 | 显示全部楼层
回复【3楼】shuilian007:
---------------------------------
为什么是默认关了啊,可以解释一下吗?
回复 支持 反对

使用道具 举报

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
 楼主| 发表于 2012-8-3 21:18:17 | 显示全部楼层
不可以改标题么?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 01:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表