OpenEdv-开源电子网

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

用定时器3产生5分钟的中断

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-5-10
在线时间
0 小时
发表于 2013-5-10 15:20:51 | 显示全部楼层 |阅读模式
用SRM32定时器3,做最简单的溢出中断
void TIMER3_INIT(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;            //定时器声明
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //定时器2时钟使能,2分频,72M
        TIM_TimeBaseStructure.TIM_Prescaler =(7200-1); //psc  设置预分频数 72M/7200=10K
        TIM_TimeBaseStructure.TIM_Period = (5000); //arr 设置自动重装载寄存器        arr         10K/5000=2Hz  500ms溢出时间
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上模式
        TIM_TimeBaseStructure.TIM_ClockDivision= TIM_CKD_DIV1;        //=0x0000  设置时间分割值
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);         //初始化
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清中断标志位
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //使能中断   
        TIM_ARRPreloadConfig(TIM3, DISABLE);   //禁止ARR预装载缓冲器        
               TIM_Cmd(TIM2,ENABLE); //开启定时器
}
void MBTIM3_ENable(void)           //定时器3中断配置
{
        NVIC_InitTypeDef NVIC_InitStructure;                          //声明   
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  //设置中断优先级分组
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;        //设置为定时器3中断,设置中断源
//        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;  //设置抢占优先级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                //设置响应优先级
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                        //使能
        NVIC_Init(&NVIC_InitStructure);                                  //初始化
}
以下是重点,以上配置是500ms溢出,现在想产生5分钟的时间溢出中断,在中断里累加,当累加到600,也就是5分钟,但是程序运行几秒钟,就进入断点了,怎么回事啊。以前在AVR就是用这样的方法,现在在STM32里不行了啊
unsigned int iTimerCount = 0;
void TIM3_IRQHandler(void)  //定时器中断
{
 
    if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   //如果产生定时器中断
  {
       iTimerCount++;
      if(iTimerCount>=600)
     {
         iTimerCount=0;
          TIM3->CR1&=0xfe;      //关闭定时器3
          TIM_SetCounter(TIM3,0);  //清计数器
          TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清标志位
          led_off;
     }
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-10 17:11:02 | 显示全部楼层
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清标志位
放到 TIM3_IRQHandler的最外层,也就是每次进入中断都要清。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-5-10
在线时间
0 小时
 楼主| 发表于 2013-5-13 08:10:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
多谢原子哥的回复,试试看
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 06:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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