找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 802|回复: 1
打印 上一主题 下一主题
收起左侧

stm32单片机定时中断的问题

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

屏幕截图 2024-09-17 144510.png (145.31 KB, 下载次数: 6)

屏幕截图 2024-09-17 144510.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 单片机教程网

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