|
楼主 |
发表于 2019-5-21 13:57:57
|
显示全部楼层
- void Time2_init(void * _pCallBack)
- {
-
- TIM_TimeBaseInitTypeDef TIM_InitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
- TIM_InitStructure.TIM_Period=10000-1;
- TIM_InitStructure.TIM_Prescaler=72-1;
- TIM_InitStructure.TIM_ClockDivision=0;
- TIM_InitStructure.TIM_CounterMode=TIM_CounterMode_Up;
- TIM_InitStructure.TIM_RepetitionCounter=0;
- TIM_TimeBaseInit(TIM2,&TIM_InitStructure);
- TIM_ClearFlag(TIM2,TIM_FLAG_Update);
- TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
- NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- s_TIM_CallBack = (void (*)(void))_pCallBack;
- TIM_Cmd(TIM2,ENABLE);
- }
复制代码
定时器中断优先级是3,中断中调用以下回调函数。发现函数运行到这里的时候就会卡住。
- xResult = xEventGroupSetBitsFromISR(xCreatedEventGroup,
- BIT_0 ,
- &xHigherPriorityTaskWoken );
复制代码- static void TIM_CallBack(void)
- {
- BaseType_t xResult;
- BaseType_t xHigherPriorityTaskWoken = pdFALSE;
- Run = ~Run;
- xResult = xEventGroupSetBitsFromISR(xCreatedEventGroup,
- BIT_0 ,
- &xHigherPriorityTaskWoken );
- if( xResult != pdFAIL )
- {
- portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
- }
- }
复制代码
, |
|