
定时器配置 void TIM3_Init(void) {/ p% j& ~+ P0 r. U TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; ; R! [8 W# g) j RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_DeInit(TIM3);4 z' C% u* k' m 7 t7 q( {% j- Q7 K, z* F r 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);" s& a2 e! w b% N0 |1 n: T& b 2 L; f& o5 w3 T& z: i1 a1 P# X TIM_PrescalerConfig(TIM3, 23999, TIM_PSCReloadMode_Immediate); TIM_ClearFlag(TIM3, TIM_FLAG_Update);+ W$ e1 V$ o; ~ TIM_ITConfig(TIM3, TIM_IT_Update , ENABLE);9 A6 [+ i3 _5 J$ L, } }9 d+ |5 v# D$ C5 s& ~ $ X1 L( L! ^! Q0 r3 h- p 9 _1 F- T5 X: u$ a 中断 void Nvic_Init(void)+ Y& N$ M G1 N. @ { NVIC_InitTypeDef NVIC_InitStructure; 6 d7 {! L9 X+ D1 t. _, d: q$ W. x NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;3 L0 v5 p; j6 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; m( L T' Q* |$ i6 M' X NVIC_Init(&NVIC_InitStructure); 2 h. M% |. J; M% ?/ k & e- y& x- T: z4 N0 O& S+ O5 H }. P+ B+ V* p2 p) B' H( S * n$ w# S9 e/ s' m. S; c9 ` void TIM3_IRQHandler(void)4 p; x; E3 C E6 [' j6 j {- z, v0 M f0 L1 {0 @/ P: F if (TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET)6 ~2 C, j: X" C. N4 g) g { TIM_ClearITPendingBit(TIM3, TIM_IT_Update);1 {7 v# C ?' P" @0 T GPIO_WriteBit(LED_PORT, LED_PIN_1 , (BitAction)((1-GPIO_ReadOutputDataBit(LED_PORT, LED_PIN_1)))); . C# C# Y7 R/ W2 a }4 ^( s$ K! Z8 n } int main(void) { 6 S. R3 y4 _8 @& N- p) z, W1 s 9 _/ Q n9 w. Y( p- o O" V! ? SystemInit(); 3 v0 `- n) }* [% V LED_Init(); Nvic_Init();- ?! e: c7 S1 \% F TIM3_Init(); while(1) { } } ( K5 n$ X* E" v) Z R8 j2 a5 p" N |
072的板子
俺是初学者