野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12355|回复: 6

关于ucos ii的OSSemCreat(0)函数无定义问题

[复制链接]
发表于 2015-11-25 17:02:01 | 显示全部楼层 |阅读模式
实验条件:野火ISO-MINI开发板
实验目的:通过KEY2(PC13)的EXIT中断,发送一个信号量给KEY2任务,然后控制蜂鸣器响一下。
实验中的部分函数:
OS_EVENT        *Key2_Sem;
INT8U                        Key2_Sem_err;

OS_STK task_key2_stk[TASK_KEY2_STK_SIZE];                 
void Task_KEY_2(void *p_arg)
{
        (void)p_arg;                                                 
        Key2_Sem = OSSemCreat(0);//创建信号量
        while (1)
        {
                OSSemPend(Key2_Sem , 0 , &Key2_Sem_err);
                OSTimeDlyHMSM(0, 0,0,100);

                printf("Key2 is Active!***%d\r\n");
        }
}

同时:
                                       /* ------------------------ SEMAPHORES ------------------------ */
#define OS_SEM_EN                 1u   /* Enable (1) or Disable (0) code generation for SEMAPHORES     */
#define OS_SEM_ACCEPT_EN          1u   /*    Include code for OSSemAccept()                            */
#define OS_SEM_DEL_EN             1u   /*    Include code for OSSemDel()                               */
#define OS_SEM_PEND_ABORT_EN      1u   /*    Include code for OSSemPendAbort()                         */
#define OS_SEM_QUERY_EN           1u   /*    Include code for OSSemQuery()                             */
#define OS_SEM_SET_EN             1u   /*    Include code for OSSemSet()      




编译之后出现以下问题:
compiling Task_Key_2.C...
APP\Task_Key_2.C(11): warning:  #223-D: function "OSSemCreat" declared implicitly
          Key2_Sem = OSSemCreat(0);
APP\Task_Key_2.C(11): error:  #513: a value of type "int" cannot be assigned to an entity of type "OS_EVENT *"
          Key2_Sem = OSSemCreat(0);
APP\Task_Key_2.C(17): warning:  #224-D: the format string requires additional arguments
                  printf("Key2 is Active!***%d\r\n");


请教大神指教!谢谢!


回复

使用道具 举报

 楼主| 发表于 2015-11-25 17:03:12 | 显示全部楼层
本帖最后由 langwangjc 于 2015-11-25 17:21 编辑

/// IO ÏßÖD¶Ï£¬ÖD¶Ï¿úÎaPC13
void macEXTI_INT_FUNCTION (void)
{
        if(EXTI_GetITStatus(macEXTI_LINE) != RESET) //è·±£êÇ·ñ2úéúáËEXTI LineÖD¶Ï
        {
                OSIntEnter();
                OSSemPost(Key2_Sem);
                EXTI_ClearITPendingBit(macEXTI_LINE);     //Çå3yÖD¶Ï±ê־λ
                OSIntExit();
        }  
}
QQ截图20151125172012.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-25 17:26:15 | 显示全部楼层
在线等待中,谢谢
回复 支持 反对

使用道具 举报

发表于 2015-11-25 17:29:16 | 显示全部楼层
语法错误直接在调试工具上找找吧,这样帖代码我都不知道是哪行错了
回复 支持 反对

使用道具 举报

发表于 2015-11-25 18:24:12 | 显示全部楼层
        //创建一个信号量,按键按下的时候post一个信号量给其他任务
        OSSemCreate ((OS_SEM *)&SEM_SHOT,     //指向信号量变量的指针
                           (CPU_CHAR    *)"SEM_SHOT",    //信号量的名字
                           (OS_SEM_CTR   )0,             //信号量这里是指示事件发生,所以赋值为0,表示事件还没有发生
                           (OS_ERR      *)&err);         //错误类型
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-26 13:33:17 | 显示全部楼层
谢谢楼上的回复,十分感谢,问题已经排除
回复 支持 反对

使用道具 举报

发表于 2018-10-10 02:12:43 | 显示全部楼层
楼主怎么解决的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-29 04:49 , Processed in 0.031560 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表