OpenEdv-开源电子网

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

一个工程中,NVIC只能设置一次吗?

[复制链接]

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
发表于 2013-11-7 08:48:39 | 显示全部楼层 |阅读模式

   我用了两个中断,一个是定时器TIM3的中断,一个是PB0检测下降沿的中断,我设置了两次NVIC,代码如下,

void TIM3_Int_Init(uint16_t arr,uint16_t psc)

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
     NVIC_InitTypeDef NVIC_InitStructure; 
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
     //定时器TIM3初始化
     TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 
     TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
     TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
     //中断优先级NVIC设置
     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  //先占优先级0级
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
     NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器
     TIM_Cmd(TIM3, ENABLE);  //使能TIMx     
}


/********** PB0配置 ***********/
    RCC_Config()
    {
         ....  .....
    }
    GPIOConfig()
   {
        ...  ....
    } 

//PB0的中断配置
void NVICConfig(void)/* 嵌套中断配置 */
{
     NVIC_InitTypeDef NVIC_InitStructure;
     /* Configure the NVIC Preemption Priority Bits */
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;  /* 设外部中断,此处使能外部中断0 */
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);
}


请问我这样配置,有没有错啊?如果有错,怎么改正?谢谢各位前辈了

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

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-5-12
在线时间
0 小时
发表于 2013-11-7 09:05:55 | 显示全部楼层
一个工程中分组只能有一次,其它具体的中断每次要再配置下抢占和响应优先级的
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-11-7 09:18:24 | 显示全部楼层
http://www.openedv.com/posts/list/23624.htm
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-11-7 12:26:28 | 显示全部楼层
回复【3楼】dzng11:
---------------------------------
谢谢。
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
 楼主| 发表于 2013-11-7 13:40:54 | 显示全部楼层
回复【3楼】dzng11:
---------------------------------
好人!已解决
回复 支持 反对

使用道具 举报

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
 楼主| 发表于 2013-11-7 13:41:08 | 显示全部楼层
回复【2楼】ykhumanspider:
---------------------------------
明白了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 07:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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