找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

stm32单片机定时中断的问题

查看数: 329 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-9-17 14:45

正文摘要:

我在使用STM32F103RCT6做定时器中断实验的时候发现,当使用定时器5,6,7都不能触发定时器中断进入服务函数,但是使用定时器12348却可以,配置完全一样,按道理也不应该有区别才对呀,搞了一天也不知道为什么

回复

ID:404160 发表于 2024-9-18 12:00
可能原因分析
时钟配置问题:
APB1/APB2时钟使能: 确保定时器5、6、7所在的APB1时钟已经正确使能。
时钟源选择: 检查时钟源是否正确选择,尤其是对于不同组的定时器,时钟源可能有所不同。
NVIC中断配置问题:
中断优先级: 确认定时器5、6、7对应中断的优先级是否设置过高,导致被其他中断抢占。
中断分组: 检查NVIC中断分组是否正确,确保定时器中断可以被正常响应。
试试下面的代码看可行否?
void Timer5_Init(void) {
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);

    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = 999;  // 1000 - 1
    TIM_TimeBaseInitStructure.TIM_Prescaler = 7199;  // 7200 - 1
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM5, &TIM_TimeBaseInitStructure);

    TIM_ClearFlag(TIM5, TIM_FLAG_Update);
    TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    TIM_Cmd(TIM5, ENABLE);
}

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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