OpenEdv-开源电子网

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

求助 F407 开启两个通用定时器中断程序不能运行

[复制链接]

4

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2015-11-29
在线时间
38 小时
发表于 2016-11-24 23:35:22 | 显示全部楼层 |阅读模式
5金钱
    请求支援 :   在同一工程中,设置F407通用定时器2(TIM2)和定时器3(TIM3)中断,在主函数初始化定时器时,定时器2可以通过初始化,可是初始化定时器3时在( NVIC_Init(&NVIC_InitStructure);  就不能运行下去了......  有点迷茫为什么觉得定时器设置好像没有错,为什么程序就不能运行下去???  

          //通用定时器2中断初始化

void TIM2_Int_Init(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);  ///使能TIM2时钟
       
        TIM_TimeBaseInitStructure.TIM_Period = 8400-1;         //自动重装载值
        TIM_TimeBaseInitStructure.TIM_Prescaler=10-1;  //定时器分频
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//初始化TIM2
        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //允许定时器2更新中断
        TIM_Cmd(TIM2,ENABLE); //使能定时器2
         //中断优先级NVIC设置
        NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //定时器2中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //抢占优先级0
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        printf("time2  Init OK \r\n");       
}




//通用定时器3中断初始化

void TIM3_Int_Init(void)
{
       
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);  ///使能TIM3时钟
       
        TIM_TimeBaseInitStructure.TIM_Period = 8400-1;         //自动重装载值
        TIM_TimeBaseInitStructure.TIM_Prescaler=10-1;  //定时器分频
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;   //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3       
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断
        TIM_Cmd(TIM3,ENABLE); //使能定时器3

         //中断优先级NVIC设置
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //优占优先级0级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  //从优先级2级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
   // 初始化定时器程序只能运行到这里
    NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器               
                printf("time3  Init OK \r\n");       
}


   

最佳答案

查看完整内容[请看2#楼]

我刚刚发现我没有定义中断发生之后的函数 void TIMx_Handler(void) ,定义了之后不卡住了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-22
在线时间
4 小时
发表于 2016-11-24 23:35:23 | 显示全部楼层
吹神歌迷 发表于 2017-5-7 20:31
我的是F103的板子,我的也是这种情况,我仿真跟踪的时候,单步调试第二个也可以初始化,但是一旦用step o ...

我刚刚发现我没有定义中断发生之后的函数 void TIMx_Handler(void) ,定义了之后不卡住了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-11-26 01:15:35 | 显示全部楼层
仿真跟踪
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-22
在线时间
4 小时
发表于 2017-5-7 20:31:40 | 显示全部楼层

我的是F103的板子,我的也是这种情况,我仿真跟踪的时候,单步调试第二个也可以初始化,但是一旦用step out就卡住。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 02:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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