UCOS-II API ²Î¿¼ÊÖ²á ÏÂÔØ±¾ÎÄ

²Î¿¼ÊÖ²á

OSMemQuery( )

INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);

ËùÊôÎļþ µ÷ÓÃÕß ¿ª¹ØÁ¿ OS_MEM_EN ÈÎÎñ»òÖÐ¶Ï OSMemQuery£¨£©º¯ÊýµÃµ½ÄÚ´æÇøµÄÐÅÏ¢¡£¸Ãº¯Êý·µ»ØOS_MEM½á¹¹°üº¬µÄÐÅÏ¢£¬µ«Ê¹ÓÃÁËÒ»¸öеÄOS_MEM_DATAµÄÊý¾Ý½á¹¹¡£OS_MEM_DATAÊý¾Ý½á¹¹»¹°üº¬ÁËÕý±»Ê¹ÓõÄÄÚ´æ¿éÊýÄ¿µÄÓò¡£

OS_MEM.C ²ÎÊý

pmem ÊÇÖ¸ÏòÄÚ´æÇø¿ØÖÆ¿éµÄÖ¸Õ룬¿ÉÒÔ´ÓOSMemCreate£¨£©º¯Êý ·µ»ØµÃµ½¡£ Pdata ÊÇÖ¸ÏòOS_MEM_DATAÊý¾Ý½á¹¹µÄÖ¸Õ룬¸ÃÊý¾Ý½á¹¹°üº¬ÁËÒÔϵÄÓò£º

V /*Ö¸ÏòÄÚ´æÇøÆðʼµØÖ·µÄÖ¸Õë */ oid OSAddr; Void OSFreeList; /*Ö¸Ïò¿ÕÏÐÄÚ´æ¿éÁбíÆðʼµØÖ·µÄÖ¸Õë */ INT32U OSBlkSize; /*ÿ¸öÄÚ´æ¿éµÄ´óС */ INT32U OSNBlks; /*¸ÃÄÚ´æÇøµÄÄÚ´æ¿é×ÜÊý */ INT32U OSNFree; /*¿ÕÏеÄÄÚ´æ¿éÊýÄ¿ */ INT32U OSNUsed; /*ʹÓõÄÄÚ´æ¿éÊýÄ¿ */

·µ»ØÖµ

OSMemQuery£¨£©º¯Êý·µ»ØÖµ×ÜÊÇOS_NO_ERR¡£

×¢Òâ/¾¯¸æ

±ØÐëÊ×ÏȽ¨Á¢ÄÚ´æÇø£¬È»ºóʹÓá£

·¶Àý£º

OS_MEM *CommMem;

void Task (void *pdata) {

INT8U err; OS_MEM_DATA mem_data;

pdata = pdata; for (;;) { .

err = OSMemQuery(CommMem, &mem_data); . } }

¦ÌC/OS-II:ʵʱ²Ù×÷ϵͳÄÚºË

OSQAccept( )

Void *OSQAccept(OS_EVENT *pevent);

ËùÊôÎļþ µ÷ÓÃÕß ¿ª¹ØÁ¿ OS_Q_EN ÈÎÎñ»òÖÐ¶Ï OSQAccept£¨£©º¯Êý¼ì²éÏûÏ¢¶ÓÁÐÖÐÊÇ·ñÒѾ­ÓÐÐèÒªµÄÏûÏ¢¡£²»Í¬ÓÚOSQPend£¨£©º¯Êý£¬Èç¹ûûÓÐÐèÒªµÄÏûÏ¢£¬OSQAccept£¨£©º¯Êý²¢²»¹ÒÆðÈÎÎñ¡£Èç¹ûÏûÏ¢ÒѾ­µ½´ï£¬¸ÃÏûÏ¢±»´«µÝµ½Óû§ÈÎÎñ¡£Í¨³£Öжϵ÷Óøú¯Êý£¬ÒòΪÖжϲ»ÔÊÐí¹ÒÆðµÈ´ýÏûÏ¢¡£

OS_Q.C ²ÎÊý

pevent ÊÇÖ¸ÏòÐèÒª²é¿´µÄÏûÏ¢¶ÓÁеÄÖ¸Õë¡£µ±½¨Á¢ÏûÏ¢¶ÓÁÐʱ£¬¸ÃÖ¸Õë·µ»Øµ½Óû§³ÌÐò¡££¨²Î¿¼OSMboxCreate£¨£©º¯Êý£©¡£

·µ»ØÖµ

Èç¹ûÏûÏ¢ÒѾ­µ½´ï£¬·µ»ØÖ¸Ïò¸ÃÏûÏ¢µÄÖ¸Õ룻Èç¹ûÏûÏ¢¶ÓÁÐûÓÐÏûÏ¢£¬·µ»Ø¿ÕÖ¸Õë¡£

×¢Òâ/¾¯¸æ

±ØÐëÏȽ¨Á¢ÏûÏ¢¶ÓÁУ¬È»ºóʹÓá£

·¶Àý£º

OS_EVENT *CommQ;

void Task (void *pdata) {

void *msg;

pdata = pdata; for (;;) {

msg = OSQAccept(CommQ); /* ¼ì²éÏûÏ¢¶ÓÁÐ */ if (msg != (void *)0) {

. /* ´¦Àí½ÓÊܵÄÏûÏ¢ */ . } else {

. /* ûÓÐÏûÏ¢ */ } . } }

²Î¿¼ÊÖ²á

¦ÌC/OS-II:ʵʱ²Ù×÷ϵͳÄÚºË

OSQCreate( )

OS_EVENT *OSQCreate( void **start, INT8U size);

ËùÊôÎļþ µ÷ÓÃÕß ¿ª¹ØÁ¿ OS_Q_EN ÈÎÎñ»òÆô¶¯´úÂë OSQCreate£¨£©º¯Êý½¨Á¢Ò»¸öÏûÏ¢¶ÓÁС£ÈÎÎñ»òÖжϿÉÒÔͨ¹ýÏûÏ¢¶ÓÁÐÏòÆäËûÒ»¸ö»ò¶à¸öÈÎÎñ·¢ËÍÏûÏ¢¡£ÏûÏ¢µÄº¬ÒåÊǺ;ßÌåµÄÓ¦ÓÃÃÜÇÐÏà¹ØµÄ¡£

OS_Q.C ²ÎÊý

start ÊÇÏûÏ¢ÄÚ´æÇøµÄ»ùµØÖ·£¬ÏûÏ¢ÄÚ´æÇøÊÇÒ»¸öÖ¸ÕëÊý×é¡£ Size ÊÇÏûÏ¢ÄÚ´æÇøµÄ´óС¡£

·µ»ØÖµ

OSQCreate£¨£©º¯Êý·µ»ØÒ»¸öÖ¸ÏòÏûÏ¢¶ÓÁÐʼþ¿ØÖÆ¿éµÄÖ¸Õë¡£Èç¹ûûÓпÕÓàµÄʼþ¿ÕÏп飬OSQCreate£¨£©º¯Êý·µ»Ø¿ÕÖ¸Õë¡£

×¢Òâ/¾¯¸æ

±ØÐëÏȽ¨Á¢ÏûÏ¢¶ÓÁУ¬È»ºóʹÓá£

·¶Àý£º

OS_EVENT *CommQ; void *CommMsg[10];

void main(void) {

OSInit(); /* ³õʼ»¯¦ÌC/OS-¢ò */ . .

CommQ = OSQCreate(&CommMsg[0], 10); /*½¨Á¢ÏûÏ¢¶ÓÁÐ */ .

OSStart(); /* Æô¶¯¶àÈÎÎñÄÚºË */ }