中级会员
 
- 积分
- 466
- 金钱
- 466
- 注册时间
- 2018-4-26
- 在线时间
- 78 小时
|
2金钱
本帖最后由 关山难越 于 2018-4-27 08:44 编辑
在用定时器中断的时候,理论上计算的是隔了0.5S就发生一次中断,但实际上是大约5秒之后才发生中断,请教一下是什么原因,时钟是32M的,
[mw_shl_code=applescript,true]void TIM3_IT_Init(uint16_t psc,uint16_t arc)
{
//3õê¼»ˉ¶¨ê±Æ÷½á11ìå
TIM_TimeBaseInitTypeDef TIM_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //′ò¿a¶¨ê±Æ÷μÄíaéèê±Öó
TIM_DeInit(TIM3);
//TIM»ù′¡ÅäÖÃ
TIM_InitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_InitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_InitStructure.TIM_Period=arc;//×Ô¶ˉÖØ×°ÔØÖμ
TIM_InitStructure.TIM_Prescaler=psc; //Ô¤·ÖÆμÖμ
TIM_TimeBaseInit(TIM3,&TIM_InitStructure);
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//ÔêDí¶¨ê±Æ÷3¸üDÂÖD¶Ïê1Äü
//NVIC configration
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM3,ENABLE);//ê1Äü ¶¨ê±Æ÷3
}
//¶¨ê±Æ÷4ÖD¶Ï·tÎñoˉêy
void TIM3_IRQHandler(void)
{
//delay_ms(50);
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //òç3öÖD¶Ï
{
//LED3_ON;
printf("111111\n");
LD_ALLON();
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //Çå3yÖD¶Ï±ê־λ
}
}
mian.c
int main(void)
{
//static uint8_t a;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemInit();
delay_init(32);
uart_init();
LED_ALLInit();
KEY_ALLInit();
//EXTI_Key_Init();
LD_ALLOFF();
TIM3_IT_Init((5000-1),(3200-1));
while(1)
{
// a=Get_KeyVal(KEY1_PORT,KEY1_Pin);
// if(a==1)
// {
// delay_ms(50);
// LD_ALLON();
// }
}
}[/mw_shl_code]
想问一下是 哪里没有配置好还是什么原因,我计算的 3200*5000/32000000=0.5s
但是实际上确实相差很大
|
-
-
|