为什么在中断服务函数缺失的的情况下,函数不能执行主函数中while(1)的语句呢??
[mw_shl_code=c,true]#include "timer.h"
#include "led.h"
void timer_init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //?±??????
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);
//??????????NVIC?è??
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //??????????0??
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //????????3??
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??±?????
NVIC_Init(&NVIC_InitStructure); //??????NVIC?????÷
TIM_Cmd(TIM3,ENABLE);
}
//void TIM3_IRQHandler(void)
//{
// if(TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)
// {
// TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
// LED0=!LED0;
//
// }
//}
//
下面为主函数
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
//ALIENTEK????STM32??·?°????é1
//???í?????é
//?????§????www.openedv.com
//?????????í??×?????????????
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//????·?×é
LED_Init();
timer_init(4999,7199);
LED1=0;
LED0=0;
while(1)
{
LED1=!LED1;
delay_ms(1000);
}
}
[/mw_shl_code]
|