STM32F4使用UCOSIII,信号量无法唤起任务 str计数已经为非0
//RS485通讯任务函数 无法进入这个任务
void RS485_task(void *pdata)
{
OS_ERR err;
// CPU_SR_ALLOC();
pdata = pdata;
while(1)
{
OSSemPend(&sem_RS485,0,OS_OPT_PEND_BLOCKING,0,&err); //请求信号量
Slave_Service(); //485接收数据处理
OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_HMSM_STRICT,&err); //延时2ms
}
}
//发送信号量
//定时器1中断服务程序
//TIM1_Init(200-1,84-1) //20ms中断
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位
// TIM3_COUNT++;
// if(TIM3_COUNT >= 10) //如果超过100ms,完成接收
{
RS485_RX_STA = 1; //接收完成
OSSemPost(&sem_RS485,OS_OPT_POST_1,&err);//发送信号量
// TIM3_COUNT = 0; //数据计数清零
TIM_Cmd(TIM3, DISABLE); //关闭定时器中断
}
}
}