请教原子哥及各位前辈,在uCOS-II 中使用库函数定时器,在其中断函数中发送信号量,在任务中调用,定时器溢出了,也不见其发送信号量。后又使用串口监控也是毫无反应,感觉没有进到中断,定时器参考原子哥实验写的。
[mw_shl_code=c,true]#include "ucos_ii.h"
#include "time.h"
#include "stm32f10x.h"
#include "uart.h"
void TIM3_Int_Init(INT16U arr,INT16U psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStucture;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseStucture.TIM_Period=arr;
TIM_TimeBaseStucture.TIM_Prescaler=psc;
TIM_TimeBaseStucture.TIM_ClockDivision=0;
TIM_TimeBaseStucture.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStucture);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
TIM_Cmd(TIM3,ENABLE);
}
void TIM3_IRQHandler(void)
{
OSIntEnter();
if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
{
OSSemPost(sem_led);
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
OSIntExit();
}
[/mw_shl_code]
|