OpenEdv-开源电子网

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

STM32F103中断优先级配置问题

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-4-11
在线时间
4 小时
发表于 2017-4-11 09:58:06 | 显示全部楼层 |阅读模式
1金钱
我在使用定时器5产生定时中断时发现先设置中断优先级再初始化定时器,定时器不能工作,具体代码如下如果直接在定时器5初始化函数加中断优先级配置则工作正常,请给位大佬帮忙看看。
//中断优先级设置

void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
       


       

        NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_IRQn;  //TIM3ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);  //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼
       
         NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;                //ÏèÕ¼óÅÏè¼¶        2
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                                //′óóÅÏè¼¶                0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                       
        NVIC_Init(&NVIC_InitStructure);

       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       





       
       
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM3ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);

       
               
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);
               
        NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  //TIM3ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);
               


       

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  //TIM3ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);
       
       
       
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                                               
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;                //ÏèÕ¼óÅÏè¼¶        
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                        //′óóÅÏè¼¶          0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       



        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
       
        NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;            
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;                  //ÏèÕ¼óÅÏè¼¶        1
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                         //′óóÅÏè¼¶                0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                           
        NVIC_Init(&NVIC_InitStructure);   
         

        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;                //ÏèÕ¼óÅÏè¼¶        2
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                                //′óóÅÏè¼¶                0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                       
        NVIC_Init(&NVIC_InitStructure);
//        NVIC_SetPriority(SysTick_IRQn,NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0,0));
}


//定时器5初始化
void TIM5_Configuration(void)
{
       
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_SetCounter( TIM5, 0x0000);
  TIM_ClearFlag(TIM5, TIM_FLAG_Update);      
  TIM_ClearITPendingBit(TIM5, TIM_FLAG_Update); //??TIM2???????????
  TIM_ARRPreloadConfig(TIM5, ENABLE);         
  TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); //??TIM2???   

  TIM_TimeBaseStructure.TIM_Period = 5000;      //????????2000,??????0xffff
  TIM_TimeBaseStructure.TIM_Prescaler =7199;     //??72
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     // ????
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //????????
  TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
  TIM_Cmd(TIM5, ENABLE);       //TIM2 enable counter
       

}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-11 11:09:34 | 显示全部楼层
程序中可以多次改变中断优先级分组吗?设置了好几次不通的中断优先级分组
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

4

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-4-5
在线时间
10 小时
发表于 2017-4-11 11:28:16 | 显示全部楼层
szczyb1314 发表于 2017-4-11 11:09
程序中可以多次改变中断优先级分组吗?设置了好几次不通的中断优先级分组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  这个分组设置一次就好了  就是说优先级分配的格式啊  你每次都重新设置不合理啊
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-4-11
在线时间
4 小时
 楼主| 发表于 2017-4-11 11:35:02 | 显示全部楼层
ysjysc 发表于 2017-4-11 11:28
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  这个分组设置一次就好了  就是说优先级分配的格式啊 ...

不是的,我这个设置的分组是不一样的,还有就是我如果在初始化函数里面加上中断分组设置运行起来也是没问题的
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-4-11
在线时间
4 小时
 楼主| 发表于 2017-4-11 13:46:22 | 显示全部楼层
szczyb1314 发表于 2017-4-11 11:09
程序中可以多次改变中断优先级分组吗?设置了好几次不通的中断优先级分组

仅设置一次也不对的,定时器还是跑不起来,而且设置分组不是以最后一次为准吗。这不是主要的问题,我是想问下是是否还需要进行其他的配置呢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 05:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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