RAMILE 发表于 2014-8-22 14:29:51

关于事件获取函数rt_event_recv返回值的问题

本帖最后由 RAMILE 于 2014-8-22 14:31 编辑

返回值怎么是负数,本来以为和ucos差不多,检测获取事件超时的返回值时候,程序出现异常,单步查看返回值err,结果是-RT_ETIMEOUT

有人知道为什么要用负数??

//************************ 继电器刷新 ***************************
//函数定义: void thread_entry_Relay(void* parameter)
//入口参数:无
//出口参数:无
//备    注:Editor:
//******************************************************************

void thread_entry_Relay(void* parameter)
{
    static uint16_t RelayDataOld;
    uint32_t temp;
    rt_err_t err;
   
    RELAY_CLR_L();                      /*nOEenable*/
    RELAY_ST_L();
    SPI_I2S_SendData(SPI3, 0);
    rt_thread_delay(1) ;
    RELAY_ST_H();
   
        while (1)
        {
      err = rt_event_recv( &event, /* 秒脉冲事件*/
                           (1 << FLAGBIT_RELAYFLUSH),
                            RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
                            500,
                            &temp);

      if ( err== RT_EOK|| err == -RT_ETIMEOUT){      
            RELAY_CLR_L();                      /*nOEenable*/
            RELAY_ST_L();
            SPI_I2S_SendData(SPI3, G_RELAY );
            rt_thread_delay(1) ;
            RELAY_ST_H();

      }
        }
}

aozima 发表于 2014-8-22 14:43:17

惯例吧,一般出错值用负数。

RAMILE 发表于 2014-8-22 15:42:41

本帖最后由 RAMILE 于 2014-8-22 15:45 编辑

aozima 发表于 2014-8-22 14:43
惯例吧,一般出错值用负数。

我只是有点不习惯在宏定义前面加符号,以前习惯了ucos的用法
=======
还有个问题请教Ozma,我想创建一个 静态的软件定时器rt_timer,发现缺了rt_timer的类型定义
我是自己加上的
typedef struct rt_timer rt_timer_type;

用的工具是MDK4.72 不知是不是有问题
页: [1]
查看完整版本: 关于事件获取函数rt_event_recv返回值的问题