²Î¿¼ÊÖ²á
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(); /* Æô¶¯¶àÈÎÎñÄÚºË */ }