OpenEdv-开源电子网

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

TIM6不进中断(换成TIM4就能进中断)

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2013-4-24
在线时间
8 小时
发表于 2013-9-26 20:42:46 | 显示全部楼层 |阅读模式
BOOL   TimersInit( USHORT usTim1Timeout50us )
{  
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
uint16_t PrescalerValue = 0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
PrescalerValue = (uint16_t) (SystemCoreClock / 20000) - 1; 
TIM_TimeBaseStructure.TIM_Period = (uint16_t) usTim1Timeout50us;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);

TIM_ARRPreloadConfig(TIM6, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

TIM_ClearITPendingBit(TIM6,TIM_IT_Update);
TIM_ITConfig(TIM6, TIM_IT_Update, DISABLE);
TIM_Cmd(TIM6,  ENABLE);
return TRUE;
  }

void TIM6_IRQHandler(void)
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{

TIM_ClearITPendingBit(TIM6, TIM_IT_Update);

prvvTIMERExpiredISR( );
}
}

上面是TIM6的定时中断,就是进不了中断
芯片用的是STM32F103VCT6  库是3.5的

但是把TIM6换成TIM4,就能进中断了,哪位帮我看看

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

使用道具 举报

10

主题

41

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2013-8-18
在线时间
5 小时
发表于 2013-9-26 21:41:25 | 显示全部楼层
回复【楼主位】xh2008email:
---------------------------------
你这个芯片有tim6吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-26 22:05:07 | 显示全部楼层
//定时器6中断服务程序  
void TIM6_IRQHandler(void)
{              
if(TIM6->SR&0X0001)//溢出中断
{
LED1=!LED1;                    
}    
TIM6->SR&=~(1<<0);//清除中断标志位      
}
//基本定时器6中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM6_Int_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<4; //TIM6时钟使能    
  TIM6->ARR=arr;   //设定计数器自动重装值//刚好1ms    
TIM6->SC=psc;   //预分频器7200,得到10Khz的计数时钟   
TIM6->DIER|=1<<0;   //允许更新中断   
TIM6->CR1|=0x01;    //使能定时器3
   MY_NVIC_Init(1,3,TIM6_IRQChannel,2);//抢占1,子优先级3,组2  
 
}
以上代码,实测无问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 16:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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