
定时器配置 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) { } } |
072的板子
俺是初学者