野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8584|回复: 2

STM32 F4 标准库 定时器中断问题

[复制链接]
发表于 2021-12-20 16:59:59 | 显示全部楼层 |阅读模式
STM32F407VE
最近写了一个程序需要用到定时器10中断功能,没有找到TIM10_IRQHandler函数,只有一个TIM1_UP_TIM10_IRQHandler
但是在使用的时候无法清除中断标志位,导致无法下一次进入中断,只能进入一次,求求大佬指点一下
是使用的回调函数不对,还是这个得用别的方法去清除中断标志

void TIM1_UP_TIM10_IRQHandler(void)//中断服务程序
{
        if(TIM_GetITStatus(TIM10,TIM_IT_Update) != RESET )
        {       
                LED2_TOGGLE
       
                TIM_ClearITPendingBit(TIM10,TIM_IT_Update);
                TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
                LED2_ON
        }
}

回复

使用道具 举报

 楼主| 发表于 2021-12-20 17:02:03 | 显示全部楼层
下面是函数初始化的全部代码,例程中给的是定时器 7 将所有的TIM7改为了TIM10
static void BASIC_TIM10_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;  //结构体声明
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10,ENABLE); //开启时钟
       
        TIM_TimeBaseInitStruct.TIM_Prescaler=16800-1;  //预分频
        TIM_TimeBaseInitStruct.TIM_Period=10000-1;    //周期
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//设置计数模式(向上计数)
        TIM_TimeBaseInit(TIM10,&TIM_TimeBaseInitStruct);  //结构体初始化
        TIM_ITConfig(TIM10,TIM_IT_Update,ENABLE);  //启动定时器更新中断
        TIM_Cmd(TIM10,ENABLE);  //使能
}

static void NVIC_TIM10Basic_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStruct;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStruct.NVIC_IRQChannel=TIM1_UP_TIM10_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;   
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=3;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStruct);
}

void TIM10_Basic_Config(void)
{
        NVIC_TIM10Basic_Config();
        BASIC_TIM10_Mode_Config();
}

void TIM1_UP_TIM10_IRQHandler(void)//中断服务程序
{
        if(TIM_GetITStatus(TIM10,TIM_IT_Update) != RESET )
        {       
                LED2_TOGGLE
       
                TIM_ClearITPendingBit(TIM10,TIM_IT_Update);
                TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
                LED2_ON
        }
}
回复 支持 反对

使用道具 举报

发表于 2021-12-21 09:39:55 | 显示全部楼层
if(TIM_GetITStatus(TIM10,TIM_IT_Update) != RESET )
        {      
                TIM_ClearITPendingBit(TIM10,TIM_IT_Update);
        }
if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET )
        {      
                TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
        }
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 06:21 , Processed in 0.026115 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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