贴出完整的代码:
void stm32f10x_cfg_tim(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
#if SYS_USE_BEEP
TIM_OCInitTypeDef TIM_OCInitStruct;
#endif
TIM_TimeBaseInitStructure.TIM_Period = 125;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_Prescaler= (36 - 1);
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Down;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_FLAG_Updata,ENABLE); TIM_Cmd(TIM2,ENABLE);
#if SYS_USE_BEEP
TIM_TimeBaseInitStructure.TIM_Period = 13035; //abour output 2.778KHz
TIM_TimeBaseInitStructure.TIM_Prescaler = 0; // TIMCLK/2
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStruct.TIM_Pulse = 6518; //TIM_OCInitStruct.TIM_Plus = TIM_TimeBaseInitStruct.TIM_Period/2
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCNPolarity_Low;
TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OC1Init(TIM3,&TIM_OCInitStruct);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
#endif
}
void stm32f10x_cfg_nvic(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable extern interrupt line */
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; //网络数据接收中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
board_dbg("\r\n Setting EXTI4_IRQn trig!");
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //网口休眠中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
board_dbg("\r\n Setting EXTI9_5_IRQn!");
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //红外开盖信号中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
board_dbg("\r\n Setting EXTI15_10_IRQn!");
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //shutdown INT
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
board_dbg("\r\n Setting EXTI2_IRQn!");
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //采样周期中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
board_dbg("\r\n Setting TIM2_IRQn!");
#if SYS_USB_ENABLE
NVIC_InitStructure.NVIC_IRQChannel = USB_HP_CAN1_TX_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
#endif
NVIC_SetVectorTable(0x08000000, 0x00);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Configure the Priority Group to 2 bits */
}
|