定时器配置void TIM3_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_DeInit(TIM3); TIM_TimeBaseInitStruct.TIM_Prescaler=23999; TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up ; TIM_TimeBaseInitStruct.TIM_Period=2000; TIM_TimeBaseInitStruct.TIM_ClockDivision=0x0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); TIM_Cmd( TIM3, ENABLE); TIM_PrescalerConfig(TIM3, 23999, TIM_PSCReloadMode_Immediate); TIM_ClearFlag(TIM3, TIM_FLAG_Update); TIM_ITConfig(TIM3, TIM_IT_Update , ENABLE); }中断void Nvic_Init(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }void TIM3_IRQHandler(void){ if (TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET) { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); GPIO_WriteBit(LED_PORT, LED_PIN_1 , (BitAction)((1-GPIO_ReadOutputDataBit(LED_PORT, LED_PIN_1)))); }} int main(void){ SystemInit(); LED_Init(); Nvic_Init(); TIM3_Init(); while(1) { }} |