[STM32F1] 请高手救急《STM32定时器中断求教》

[复制链接]
 楼主| zhy041785sea 发表于 2013-12-13 09:16 | 显示全部楼层 |阅读模式
if ( TIM_GetITStatus(TIM2 , TIM_IT_CC1) != RESET )
为什么这个读取中断状态的命令放在主程序里面读出的是0,而放在中断程序里读出的是1(正常)



这是中断配置
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}


void Timer_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_DeInit(TIM2);

TIM_TimeBaseStructure.TIM_Period=2000;//自动重装载寄存器的值
TIM_TimeBaseStructure.TIM_Prescaler= (36000 - 1); //时钟预分频数
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除溢出中断标志
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE); //开启时钟
}
caoxiaohua 发表于 2013-12-13 21:01 | 显示全部楼层
你用while(TIM_GetITStatus(TIM2 , TIM_IT_CC1) != RESET );试试,没准就对了
caoxiaohua 发表于 2013-12-13 21:01 | 显示全部楼层
你用while(TIM_GetITStatus(TIM2 , TIM_IT_CC1) != RESET );试试,没准就对了
momingwei 发表于 2014-1-10 18:04 | 显示全部楼层
这不是定时器中断吗 就应该放在中断程序里啊 为什么要放在主程序里呢  接收数据肯定直接就跳到中断程序了、、、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部