tiM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE); ///
TIM_TimeBaseInitStructure.TIM_Period = arr; //
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM9,&TIM_TimeBaseInitStructure);//
TIM_ITConfig(TIM9,TIM_IT_Update,ENABLE); //
TIM_Cmd(TIM9,ENABLE); //ʹÄܶ¨Ê±4
NVIC_InitStructure.NVIC_IRQChannel=TIM1_BRK_TIM9_IRQn; //
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; //
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; //
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
以下为hal库初始化,
- void TIM9_Init(void)
- {
- TIM9_Handler.Instance=TIM9; //TIM9中断 配置
- TIM9_Handler.Init.Prescaler=psc; //时钟/8400 分频
- TIM9_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;
- TIM9_Handler.Init.Period=arr;
- TIM9_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
- HAL_TIM_Base_Init(&TIM9_Handler);
- HAL_TIM_Base_Start_IT(&TIM9_Handler); //TIM_IT_UPDATE
- }
- void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
- {
- if(htim->Instance==TIM9)
- {
- __HAL_RCC_TIM9_CLK_ENABLE();
- HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn,1,4);
- HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn); //中断源为“TIM1_BRK_TIM9_IRQn”
- }
-
- }
复制代码以上初始化与那标准库基本意思差不多,但是没见你附上中断服务函数,若没有正确的中断入口也是不行的:
- void TIM1_BRK_TIM9_IRQHandler(void)// “TIM1_BRK_TIM9_IRQHandler”为其中断入口
- {
- if(TIM9->SR&0x0001) //判断是否为溢出中断
- {
- GPIOF->ODR ^= GPIO_PIN_10; //PF10 端口变化
- }
- TIM9->SR &= 0xFFFE; //清除中断标志
- }
复制代码一周热门 更多>