c#±àÐ´ÍøÂçµç»°

ÍÜÍÜÍÆ¼ö£ºc#±àÐ´ÍøÂçµç»°
ÕªÒª£ºÓïÒôͨ»°ÒѾ­ÊÇIMµÄ»ù±¾¹¦ÄÜÁË£¬qq£¬MSNÉõÖÁÁ¬¸Õ³öÀ´µÄ°Ù¶ÈHI¶¼×Ô´øÓïÒôÁÄÌìµÄ¹¦ÄÜ£¬´ó¼Ò¿ÉÄܾõµÃºÜìÅ£¬Æäʵ´ó¼Ò¶¼ÊÇÓõÄwindowsƽ ̨ÉϵÄAPI£¬¶®ÁËÔ­ÀíÖ®ºó×Ô¼ºÒ²¿ÉÒÔ×ö£¬ÔÙ˵ÁË΢ÈíÒ²ÌṩÁËDirectSoundµÄÍйܻ¥²Ù×÷³ÌÐò¼¯£¬Ê¹.net¿ª·¢ÈËÔ±Ò²ºÜÈÝÒ׵ĽéÈëµ½Õâ¸öÁìÓò£¬ ÉõÖÁÄ㻹¿ÉÒÔдһ¸öÄÜÅÜÔÚwindow mobileÉϵÄÓïÒôµç»°£¬ÏÖÔںöàÊÖ»ú¶¼Ö§³Öwifi£¬ÕâÑùÒ»¸ö¼òµ¥

ÔĶÁÈ«ÎÄ
Àà±ð£º asp.net±à³Ì? ²é¿´ÆÀÂÛ
#################################################################### ## ## ## ## ## CODE SKELETON v1.0.0 ## ## ## ## TP-LINK ## ## 2013.7.9 ## #################################################################### 1. žÅÊö CODE SKELETONÊÇÌáÈ¡CODEʵÏÖµÄÖ÷Ìå¿òŒÜ¡£ËüžúʵŒÊʵÏÖ»¹Óзdz£ŽóµÄ²î Ÿà¡£·œ±ãŽóŒÒÊìÏ€CODEµÄ¹ŠÄÜ»®·ÖÒÔŒ°ŽóžÅÁËœâÓïÒô¹ŠÄÜÉæŒ°µÄһЩ±à³ÌŒŒÊõ¡£ ËüÖ÷Òª°üº¬menuconfigµÄ»ùŽ¡Ê¹Óá¢MakefileŽîœš¹€³Ì¡¢¶¯Ì¬¿âµÄʹÓᢟ²Ì¬¿â µÄʹÓᢌòµ¥ÖÕ¶ËI/O¡¢»Øµ÷º¯Êý¡¢¶àÏ̱߳à³Ì¡¢socket±à³Ì¡¢Œòµ¥Çý¶¯±à³ÌµÈ ÄÚÈÝ¡£¹ŠÄÜʵÏֱȜώֲڣ¬»¶Ó­¶ÁÕß·áž»CODE SKELETONµÄÄÚÈÝ¡£CODE SKELETON Ö»º­žÇÁËCODEʵÏÖµÄÒ»²¿·ÖÄÚÈÝ£¬Èç¹û¶ÁÕß¶ÔÓïÒôÄÚÈÝÓÐÐËÈ€¿ÉÒÔœøÒ»²œÑ§Ï° ºÍÉºóÎIJοŒ×ÊÁϵÄÄÚÈÝ¡£ 2. ¿òŒÜ CODE SKELETON°üÀšÈýžöÄ£¿é£ºÄÚºËÄ£¿é£š×Ö·ûÇý¶¯simple£©£¬·þÎñŽŠÀíÖÐ ÐÄ£šcs_server)ºÍ·þÎñÇëÇó¿Í»§¶Ë£šcs_client£©¡£cs_clientÒÔÃüÁîÐеķœÊœ œÓÊÜÓû§µÄÇëÇ󣬞ùŸÝÃüÁîÔÙÍš¹ýsocket°ÑÃüÁË͵œcs_server, cs_server ŽŠÀíºó·µ»ØÖŽÐМá¹ûžøcs_client¡£Œòµ¥œá¹¹ÍŒÈçÏÂËùÊŸ¡£ *--------* *-----------* *---------* | | | | | | | simple |<----------->| server |<---------->| client | | | | | | | *--------* *-----------* *---------* server ºÍ client Ä£¿éŸùʹÓÃÁœžöÄ£¿é£¬mini_shellºÍsocketÄ£¿é¡£Ç°Õß ·â×°ÖÕ¶ËI/OºÍ»Øµ÷º¯Êý±í¡£ºóÕß·â×°unixÓòÌלÓ×ÖÓÃÓÚœø³ÌŒäÍšÐÅ¡£ 3. ĿŒœá¹¹ TOP [code skeleton¶¥²ãĿŒ] | *---> readme [±ŸÎĵµ *-*] | *---> build [¹€³Ì±àÒë»·Ÿ³] | *---> config [ÅäÖÃĿŒ£¬µ±Ç°Ö»ÓÐmenuconfig] | *---> install [¹€³Ì±àÒëºóÉú³ÉµÄʹÓÃÎÄŒþ] | *---> code [ÔŽŽúÂë] | *---> modules [ÄÚºËÄ£¿é] | | | *---> simple [Œòµ¥×Ö·ûÇý¶¯ÊµÏÖ] | *---> apps [Óû§²ãŽúÂë] | *---> inc [¹«ÓÃÍ·ÎÄŒþ] | *---> cs_libs [¿âÎÄŒþ] | | | *---> mini_shell | | | *---> socket | *---> cs_server | *---> cs_client 4. ʹÓòœÖè 4.1 ÅäÖù€³Ì œøÈëTOP/buildĿŒ£¬ÊäÈëÏÂÃæÃüÁî¡£#ÊÇlinux shellÌáÊŸ·û£¬²»ÊôÓÚÃüÁ·Ö£¬ ºóÐøŸùÏàͬº¬Òå¡£Èç¹û²»ÊäÈëMODEL=xxx, ĬÈÏʹÓÃMODEL=TEST¡£ÅäÖÃÍê³Éºó±£ŽæÅä ÖÃÐÅÏ¢¡£ # make MODEL=xxx menuconfig 4.2 ±àÒë¹€³Ì ŒÌÐøÍ£ÁôÔÚbuildĿŒ£¬ÊäÈëÏÂÃæÃüÁî¡£ # make MODEL=xxx /* MODEL=xxx¿ÉÒÔ²»ÊäÈ룬ĬÈÏʹÓÃMODEL=TEST */ ÁíÍ⣬±àÒëʱ¿ÉÒÔÊäÈë²ÎÊýÀŽŸö¶šÊÇ·ñÆô¶¯µ÷ÊÔ¿ª¹ØŒ°µ÷ÊԵȶ±ð£¬ÈçÏÂÃüÁî # make MODEL=xxx VSDEBUG=yyy /* ÆäÖÐyyy¿ÉÒÔȡֵ error, sys, info, debugl, debugm, debugh£¬Ä¬ÈÏΪerror */ 4.3 ÔËÐгÌÐò ÏÂÃæµÄ²Ù×÷ŸùÔÚ TOP/installĿŒÏ¡£ 4.3.1 ŒÓÔØÇý¶¯ ŒÓÔØŒòµ¥×Ö·ûÇý¶¯simple£¬ÊäÈëÏÂÃæÃüÁî¡£ # insmod csmsimple.ko # cd /dev # mknod -m 666 csmsimple c 220 0 # cd - 4.3.2 Æô¶¯cs_server Èç¹û±àÒëÑ¡ÏîÉèÖÃΪ¶¯Ì¬ÁŽœÓ¿â£¬ÐèÒªÏȰѶ¯Ì¬ÁŽœÓ¿â¿œ±ŽµœÏàӊλÖãš±ÈÈç /usr/lib/£©¡£Èç¹û±àÒëÑ¡ÏîÉèÖÃΪŸ²Ì¬¿â£¬Ö±œÓÊäÈëÏÂÃæÃüÁî¡£ # ./cs_server & 4.3.3 Æô¶¯cs_client Èç¹û±àÒëÑ¡ÏîÉèÖÃΪ¶¯Ì¬ÁŽœÓ¿â£¬ÐèÒªÏȰѶ¯Ì¬ÁŽœÓ¿â¿œ±ŽµœÏàӊλÖãš±ÈÈç /usr/lib/£©¡£Èç¹û±àÒëÑ¡ÏîÉèÖÃΪŸ²Ì¬¿â£¬Ö±œÓÊäÈëÏÂÃæÃüÁî¡£ # ./cs_client È»ºó¿ÉÒÔœøÈëÃüÁîÐÐģʜ£º[ code skeleton client ] # ¡£Æô¶¯Íê³É¡£ 5. ÍØÕ¹ µ±Ç°°æ±ŸÏµÍ³±ÈœÏŽÖ²Ú£¬»¶Ó­¶ÁÕßÍêÉÆ±ŸÏµÍ³¡£ŽóÖÂÂÞÁÐÐèÒªÍêÉÆµÄµØ·œ¡£ 1£©ÖÕ¶ËI/O£» 2£©ÃüÁîÐÐģʜµÄÀúÊ·ŒÇÂŒ¡¢×Ô¶¯Æ¥Å䣻 3£©Çý¶¯µÄÄں˶šÊ±Æ÷»òÕßÄÚºËÏ̲߳úÉúÊÂŒþʵÏÖclientµÄ׎̬Çл»£¬Íê³ÉÒ»žö СÐ͵Ä׎̬»ú£» 4£©Ïß³Ìͬ²œÊµÏÖ£» 5£©ÓŠÓòãŽúÂëºÍÄںˎúÂëµ÷ÊÔŒŒÊõ£» 6£©clientÌíŒÓžüÓÐÈ€µÄÃüÁî¡£ 6. ²Î¿Œ×ÊÁÏ [1] rfc3261, J. RosenbergµÈ, 2002 [2] Understanding the Session Initiation Protocol (Third Edition), Alan B.Johnston, 2009 [3] LinuxÉ豞Çý¶¯³ÌÐò [4] LinuxÍøÂ簲ȫŒŒÊõÓëʵÏÖ(µÚ¶þ°æ), ³ÂÓÂÑ«, Ç廪Žóѧ³ö°æÉç [5] Unix»·Ÿ³žßŒ¶±à³Ì [6] pjsip¹ÙÍø [7] netfilter¹ÙÍø 7. ·ŽÀ¡ÐÅÏ¢ »¶Ó­ŽóŒÒ·ŽÀ¡ÐÅÏ¢µœ zhonglianbo@tp-link.net¡£ 为什么我的readme是这杨的
最新发布
08-14
#include <reg52.h> //°üº¬51µ¥Æ¬»úÏà¹ØµÄÍ·Îļþ #include <intrins.h> #define uint unsigned int //ÖØ¶¨ÒåÎÞ·ûºÅÕûÊýÀàÐÍ #define uchar unsigned char //ÖØ¶¨ÒåÎÞ·ûºÅ×Ö·ûÀàÐÍ uchar code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, //¶¨ÒåÊýÂë¹ÜÏÔʾÊý¾Ý 0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9 uchar code RecvData[]={0x19,0x46,0x15,0x44,0x43,0x40,0x0D,0x0E,0x00,0x0F}; uchar IRCOM[7]; static unsigned int LedFlash; //¶¨ÒåÉÁ¶¯ÆµÂʼÆÊý±äÁ¿ unsigned char RunFlag=0; //¶¨ÒåÔËÐбê־λ bit EnableLight=0; //¶¨ÒåָʾµÆÊ¹ÄÜλ /*************Íê³É״ָ̬ʾµÆ¶¨Òå*************/ sbit S1=P3^2; //¶¨ÒåS1°´¼ü¶Ë¿Ú /*************Íê³Éµç»ú¿ØÖƶ˿ڶ¨Òå***********/ sbit M1A=P1^2; //¶¨Òåµç»ú1ÕýÏò¶Ë¿Ú sbit M1B=P1^3; //¶¨Òåµç»ú1·´Ïò¶Ë¿Ú sbit M2A=P1^4; //¶¨Òåµç»ú2ÕýÏò¶Ë¿Ú sbit M2B=P1^5; //¶¨Òåµç»ú2·´Ïò¶Ë¿Ú sbit IRIN=P3^3; //¶¨ÒåºìÍâ½ÓÊÕ¶Ë¿Ú /*********Íê³ÉºìÍâ½ÓÊն˿ڵ͍Òå*************/ #define ShowPort P0 //¶¨ÒåÊýÂë¹ÜÏÔʾ¶Ë¿Ú extern void ControlCar(uchar CarType); //ÉùÃ÷С³µ¿ØÖÆ×Ó³ÌÐò void delayms(unsigned char x) //0.14mSÑÓʱ³ÌÐò { unsigned char i; //¶¨ÒåÁÙʱ±äÁ¿ while(x--) //ÑÓʱʱ¼äÑ­»· { for (i = 0; i<13; i++) {} //14mSÑÓʱ } } void Delay1ms(unsigned int i) { unsigned char j,k; do{ j = 10; do{ k = 50; do{ _nop_(); }while(--k); }while(--j); }while(--i); } void Delay() //¶¨ÒåÑÓʱ×Ó³ÌÐò { uint DelayTime=30000; //¶¨ÒåÑÓʱʱ¼ä±äÁ¿ while(DelayTime--); //¿ªÊ¼½øÐÐÑÓʱѭ»· return; //×Ó³ÌÐò·µ»Ø } void tingzhi() { M1A=0; //½«M1µç»úA¶Ë³õʼ»¯Îª0 M1B=0; //½«M1µç»úB¶Ë³õʼ»¯Îª0 M2A=0; //½«M2µç»úA¶Ë³õʼ»¯Îª0 M2B=0; } void qianjin() { M1A=1; M1B=0; M2A=1; M2B=0; } void houtui() { M1A=0; M1B=1; M2A=0; M2B=1; } void youzhuan() { M1A=1; M1B=0; M2A=0; M2B=1; } void zuozhuan() { M1A=0; M1B=1; M2A=1; M2B=0; } void ControlCar(unsigned char ConType) //¶¨Òåµç»ú¿ØÖÆ×Ó³ÌÐò { tingzhi(); switch(ConType) //ÅжÏÓû§É趨µç»úÐÎʽ { case 1: //ǰ½ø //ÅжÏÓû§ÊÇ·ñÑ¡ÔñÐÎʽ1 { tingzhi(); //½øÈëǰ½øÖ®Ç° ÏÈÍ£Ö¹Ò»¶Îʱ¼ä ·ÀÖ¹µç»ú·´Ïòµçѹ³å»÷Ö÷°å µ¼ÖÂϵͳ¸´Î» Delay1ms(240); qianjin(); ShowPort=LedShowData[1]; break; } case 2: //ºóÍË //ÅжÏÓû§ÊÇ·ñÑ¡ÔñÐÎʽ2 { tingzhi(); //½øÈëºóÍË֮ǰ ÏÈÍ£Ö¹Ò»¶Îʱ¼ä ·ÀÖ¹µç»ú·´Ïòµçѹ³å»÷Ö÷°å µ¼ÖÂϵͳ¸´Î» Delay1ms(240); // LeftLed = 1 ; houtui(); ShowPort=LedShowData[2]; //M2µç»ú·´×ª break; } case 3: //×óת //ÅжÏÓû§ÊÇ·ñÑ¡ÔñÐÎʽ3 { tingzhi(); //½øÈë×óת֮ǰ ÏÈÍ£Ö¹Ò»¶Îʱ¼ä ·ÀÖ¹µç»ú·´Ïòµçѹ³å»÷Ö÷°å µ¼ÖÂϵͳ¸´Î» Delay1ms(240); zuozhuan(); ShowPort=LedShowData[3]; //M2µç»úÕýת break; } case 4: //ÓÒת //ÅжÏÓû§ÊÇ·ñÑ¡ÔñÐÎʽ4 { tingzhi(); //½øÈëÓÒת֮ǰ ÏÈÍ£Ö¹Ò»¶Îʱ¼ä ·ÀÖ¹µç»ú·´Ïòµçѹ³å»÷Ö÷°å µ¼ÖÂϵͳ¸´Î» Delay1ms(240); youzhuan(); //M1µç»úÕýת ShowPort=LedShowData[4]; //M2µç»ú·´×ª break; } case 5: //Í£Ö¹ //ÅжÏÓû§ÊÇ·ñÑ¡ÔñÐÎʽ8 { tingzhi(); ShowPort=LedShowData[0]; break; //Í˳öµ±Ç°Ñ¡Ôñ } } } void IR_IN() interrupt 2 using 0 //¶¨ÒåINT2ÍⲿÖжϺ¯Êý { unsigned char j,k,N=0; //¶¨ÒåÁÙʱ½ÓÊÕ±äÁ¿ EX1 = 0; //¹Ø±ÕÍⲿÖжÏ,·ÀÖ¹ÔÙÓÐÐźŵ½´ï delayms(15); //ÑÓʱʱ¼ä£¬½øÐкìÍâÏû¶¶ if (IRIN==1) //ÅжϺìÍâÐźÅÊÇ·ñÏûʧ { EX1 =1; //ÍⲿÖжϿª return; //·µ»Ø } while (!IRIN) //µÈIR±äΪ¸ßµçƽ£¬Ìø¹ý9msµÄǰµ¼µÍµçƽÐźš£ { delayms(1); //ÑÓʱµÈ´ý } for (j=0;j<4;j++) //²É¼¯ºìÍâÒ£¿ØÆ÷Êý¾Ý { for (k=0;k<8;k++) //·Ö´Î²É¼¯8λÊý¾Ý { while (IRIN) //µÈ IR ±äΪµÍµçƽ£¬Ìø¹ý4.5msµÄǰµ¼¸ßµçƽÐźš£ { delayms(1); //ÑÓʱµÈ´ý } while (!IRIN) //µÈ IR ±äΪ¸ßµçƽ { delayms(1); //ÑÓʱµÈ´ý } while (IRIN) //¼ÆËãIR¸ßµçƽʱ³¤ { delayms(1); //ÑÓʱµÈ´ý N++; //¼ÆÊýÆ÷¼Ó¼Ó if (N>=30) //ÅжϼÆÊýÆ÷ÀÛ¼ÓÖµ { EX1=1; //´ò¿ªÍⲿÖжϹ¦ÄÜ return; //·µ»Ø } } IRCOM[j]=IRCOM[j] >> 1; //½øÐÐÊý¾ÝÎ»ÒÆ²Ù×÷²¢×Ô¶¯²¹Áã if (N>=8) //ÅжÏÊý¾Ý³¤¶È { IRCOM[j] = IRCOM[j] | 0x80; //Êý¾Ý×î¸ßλ²¹1 } N=0; //ÇåÁãλÊý¼ÆÂ¼Æ÷ } } if (IRCOM[2]!=~IRCOM[3]) //ÅжϵØÖ·ÂëÊÇ·ñÏàͬ { EX1=1; //´ò¿ªÍⲿÖÐ¶Ï return; //·µ»Ø } for(j=0;j<10;j++) //Ñ­»·½øÐмüÂë½âÎö { if(IRCOM[2]==RecvData[j]) //½øÐмüλ¶ÔÓ¦ { ControlCar(j); //ÊýÂë¹ÜÏÔʾÏàÓ¦ÊýÂë } } EX1 = 1; //ÍⲿÖжϿª } void main(void) //Ö÷³ÌÐòÈë¿Ú { bit ExeFlag=0; //¶¨Òå¿ÉÖ´ÐÐλ±äÁ¿ LedFlash=3000; //¶ÔÉÁµÆÊý¾Ý½øÐгõʼ»¯ EX1=1; //ͬÒ⿪ÆôÍⲿÖжÏ1 IT1=1; //É趨ÍⲿÖжÏ1ΪµÍ±ßÔµ´¥·¢ÀàÐÍ EA=1; //×ÜÖжϿªÆô ShowPort=LedShowData[0]; //ÊýÂë¹ÜÏÔʾÊý×Ö0 while(1) //³ÌÐòÖ÷Ñ­»· { Delay(); //ÑÓʱ // RunStopState=~RunStopState; //ÔËÐÐָʾµÆ×´Ì¬×ª±ä } }详细解释
06-01
#include "sys.h" #include "delay.h" #include "usart.h" #include "includes.h" #include "led.h" /************************************************ ALIENTEK ¾«Ó¢°æSTM32¿ª·¢°åUCOSʵÑé Àý6-1 UCOSIII ÈÎÎñ´´½¨ÓÚɾ³ý ¼¼ÊõÖ§³Ö£ºwww.openedv.com ÌÔ±¦µêÆÌ£ºhttp://eboard.taobao.com ¹Ø×¢Î¢ÐŹ«ÖÚÆ½Ì¨Î¢Ðźţº"ÕýµãÔ­×Ó"£¬Ãâ·Ñ»ñÈ¡STM32×ÊÁÏ¡£ ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ ×÷ÕߣºÕýµãÔ­×Ó @ALIENTEK ************************************************/ //UCOSIIIÖÐÒÔÏÂÓÅÏȼ¶Óû§³ÌÐò²»ÄÜʹÓã¬ALIENTEK //½«ÕâЩÓÅÏȼ¶·ÖÅ䏸ÁËUCOSIIIµÄ5¸öϵͳÄÚ²¿ÈÎÎñ //ÓÅÏȼ¶0£ºÖжϷþÎñ·þÎñ¹ÜÀíÈÎÎñ OS_IntQTask() //ÓÅÏȼ¶1£ºÊ±ÖÓ½ÚÅÄÈÎÎñ OS_TickTask() //ÓÅÏȼ¶2£º¶¨Ê±ÈÎÎñ OS_TmrTask() //ÓÅÏȼ¶OS_CFG_PRIO_MAX-2£ºÍ³¼ÆÈÎÎñ OS_StatTask() //ÓÅÏȼ¶OS_CFG_PRIO_MAX-1£º¿ÕÏÐÈÎÎñ OS_IdleTask() /* ΪÁËʵÏÖÁÙ½çÇøµÄ±£»¤£¬UCOSIIIÌṩÁËÁ½¸öºê£ºOS_CRITICAL_ENTER() ºÍOS_CRITICAL_EXIT()¡£ µ±Ò»¸öÈÎÎñ»òÖжϽøÈëÁÙ½çÇøÊ±£¬Ëü±ØÐëµ÷ÓÃOS_CRITICAL_ENTER()ºêÒÔ»ñµÃÁÙ½çÇøµÄ±£»¤¡£ Õâ¸öºê½«½ûÓÃÖжϣ¬ÒÔÈ·±£Ö´ÐÐÁÙ½çÇøµÄ´úÂë²»»á±»ÖжϻòÇÀÕ¼£¬´Ó¶ø±£Ö¤ÁËÁÙ½çÇøµÄÔ­×ÓÐÔ¡£ µ±´úÂëÖ´ÐÐÍê±Ïʱ£¬ÈÎÎñ»òÖжϱØÐëµ÷ÓÃOS_CRITICAL_EXIT()ºêÀ´»Ö¸´Öжϣ¬ÒÔ±ãÆäËûÈÎÎñºÍÖжϿÉÒÔ·ÃÎʹ²Ïí×ÊÔ´²¢Ö´ÐÐËüÃǵĴúÂë¡£ ʹÓÃOS_CRITICAL_ENTER()ºÍOS_CRITICAL_EXIT()ºêÀ´±£»¤ÁÙ½çÇø£¬ ÄÇôÔÚÈÎÎñT1Ö´ÐеÄÕû¸öʱ¼äÄÚ£¬ÖжϽ«±»½ûÓ㬠ÆäËûÈÎÎñ½«²»ÄÜ·ÃÎʹ²Ïí×ÊÔ´²¢ÇÒÁÙ½çÇøµÄ´úÂ뽫ÒÔÔ­×Ó·½Ê½Ö´ÐÐÍê±Ï¡£ ÕâÑù¿ÉÒÔÈ·±£ÁÙ½çÇø´úÂëµÄÕýÈ·ÐÔ£¬±ÜÃ⾺ÕùÌõ¼þºÍÆäËûͬ²½ÎÊÌâ¡£ */ /* ÔÚUCOS IIIÖУ¬ÈÎÎñµÄÖ´ÐÐ˳ÐòÊÇ»ùÓÚÓÅÏȼ¶µ÷¶ÈËã·¨¡£ ÿ¸öÈÎÎñ¶¼ÓÐÒ»¸öÓÅÏȼ¶£¨0µ½255£©£¬¾ßÓиü¸ßÓÅÏȼ¶µÄÈÎÎñ±ÈµÍÓÅÏȼ¶µÄÈÎÎñ¸ü¿ÉÄܵõ½µ÷¶È¡£ UCOS IIIʹÓÃÇÀռʽµ÷¶È£¬ÕâÒâζ×ŵ±ÓÐÒ»¸ö¸ßÓÅÏȼ¶µÄÈÎÎñ¾ÍÐ÷ʱ£¬µ±Ç°ÕýÔÚÖ´ÐеÄÈÎÎñ½«±»Öжϲ¢ÇÒ¸ßÓÅÏȼ¶ÈÎÎñ½«±»Ö´ÐС£ ÕâÈ·±£Á˾ßÓиü¸ßÓÅÏȼ¶µÄÈÎÎñ¿ÉÒÔ¼°Ê±»ñµÃÖ´ÐУ¬±ÜÃⳤʱ¼ä±»µÍÓÅÏȼ¶ÈÎÎñÕ¼Óô¦ÀíÆ÷µÄÇé¿ö·¢Éú¡£ UCOS IIIÈÎÎñµÄÖ´ÐÐÊÇͨ¹ýÉÏÏÂÎÄÇл»ÊµÏֵġ£ ÉÏÏÂÎÄÇл»ÊÇÖ¸½«´¦ÀíÆ÷µÄ״̬´ÓÒ»¸öÈÎÎñ±£´æµ½Äڴ棬Ȼºó½«ÁíÒ»¸öÈÎÎñµÄ×´Ì¬×°ÔØµ½´¦ÀíÆ÷ÖУ¬ÒÔÔÚ²»¼ä¶ÏµÄÇé¿öÏÂת»»ÈÎÎñÖ´ÐС£ µ±Ò»¸öÈÎÎñÐèÒª±»ÖÐֹʱ£¬¼´Ö´ÐÐOS_TaskSuspend()º¯Êýʱ£¬UCOS III´¦ÀíÆ÷»áÖ´ÐÐÒ»¸öÈÎÎñÇл»Öжϲ¢½«¿ØÖÆÈ¨×ªÒƵ½ÁíÒ»¸öÈÎÎñ¡£ ÈÎÎñÇл»Í¨³£·¢ÉúÔÚÒÔÏÂÇé¿öÏ£º µ±ÈÎÎñÖ÷¶¯µ÷ÓÃÁËÈÎÎñ¿ØÖƺ¯Êý£¨ÀýÈ磬OS_Delay()¡¢OS_EventWait()¡¢OS_TaskSuspend()µÈ£©²¢ÍËÈÃCPUʱ£» µ±Ä³¸öÖжϷþÎñ³ÌÐò(ISR)ÔڹؼüÈÎÎñÖ´ÐÐÆÚ¼äÖ´ÐУ¨¼´ÖжÏÓÅÏȼ¶¸ßÓڹؼüÈÎÎñµÄÓÅÏȼ¶£©¡£ */ //¿ªÊ¼ÈÎÎñ£¬´´½¨ÍêÈÎÎñ¶þºÍÈÎÎñÈý¾Íɾ³ý×Ô¼º //ÈÎÎñÓÅÏȼ¶ #define START_TASK_PRIO 3 //ÈÎÎñ¶ÑÕ»´óС #define START_STK_SIZE 128 //ÈÎÎñ¿ØÖÆ¿é OS_TCB StartTaskTCB; //ÈÎÎñ¶ÑÕ» CPU_STK START_TASK_STK[START_STK_SIZE]; //ÈÎÎñº¯Êý void start_task(void *p_arg); ///ÈÎÎñ¶þÁÁµÆ£¬²¢´òÓ¡³öÐÅÏ¢ //ÈÎÎñÓÅÏȼ¶ #define TASK1_TASK_PRIO 4 //ÈÎÎñ¶ÑÕ»´óС #define TASK1_STK_SIZE 128 //ÈÎÎñ¿ØÖÆ¿é OS_TCB Task1_TaskTCB; //ÈÎÎñ¶ÑÕ» CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE]; void task1_task(void *p_arg); ///ÈÎÎñÈý£¬´òÓ¡ÈÎÎñÈýÖ´ÐÐÐÅÏ¢ //ÈÎÎñÓÅÏȼ¶ #define TASK2_TASK_PRIO 5 //ÈÎÎñ¶ÑÕ»´óС #define TASK2_STK_SIZE 128 //ÈÎÎñ¿ØÖÆ¿é OS_TCB Task2_TaskTCB; //ÈÎÎñ¶ÑÕ» CPU_STK TASK2_TASK_STK[TASK2_STK_SIZE]; //ÈÎÎñº¯Êý void task2_task(void *p_arg); volatile u8 key_pressed = 0; volatile u8 current_task = 1; void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // ???? GPIO_Init(GPIOA, &GPIO_InitStructure); } void Key_Scan(void) { static u8 key_up = 1; if (key_up && GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { delay_ms(20); // ?? if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { key_up = 0; key_pressed = 1; // ?????? } } else if (!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { key_up = 1; } } //Ö÷º¯Êý int main(void) { OS_ERR err; CPU_SR_ALLOC(); SystemInit();//ÓÉÓÚ±¾¹¤³ÌÊÇÓÉstm32f103zet6ÒÆÖ²ËùÀ´£¬Òò´ËÕâÀïÒò¼ÓÈë±¾º¯ÊýÈ·±£delayº¯ÊýÕý³£Ê¹Óà delay_init(); //ʱÖÓ³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÖжϷÖ×éÅäÖà uart_init(115200); //´®¿Ú³õʼ»¯ LED_Init(); KEY_Init(); // ??????? OSInit(&err); //³õʼ»¯UCOSIII OS_CRITICAL_ENTER(); //½øÈëÁÙ½çÇø //´´½¨¿ªÊ¼ÈÎÎñ OSTaskCreate((OS_TCB * )&StartTaskTCB, //ÈÎÎñ¿ØÖÆ¿é (CPU_CHAR * )"start task", //ÈÎÎñÃû×Ö (OS_TASK_PTR )start_task, //ÈÎÎñº¯Êý (void * )0, //´«µÝ¸øÈÎÎñº¯ÊýµÄ²ÎÊý (OS_PRIO )START_TASK_PRIO, //ÈÎÎñÓÅÏȼ¶ (CPU_STK * )&START_TASK_STK[0], //ÈÎÎñ¶ÑÕ»»ùµØÖ· (CPU_STK_SIZE)START_STK_SIZE/10, //ÈÎÎñ¶ÑÕ»Éî¶ÈÏÞλ (CPU_STK_SIZE)START_STK_SIZE, //ÈÎÎñ¶ÑÕ»´óС (OS_MSG_QTY )0, //ÈÎÎñÄÚ²¿ÏûÏ¢¶ÓÁÐÄܹ»½ÓÊÕµÄ×î´óÏûÏ¢ÊýÄ¿,Ϊ0ʱ½ûÖ¹½ÓÊÕÏûÏ¢ (OS_TICK )0, //µ±Ê¹ÄÜʱ¼äƬÂÖתʱµÄʱ¼äƬ³¤¶È£¬Îª0ʱΪĬÈϳ¤¶È£¬ (void * )0, //Óû§²¹³äµÄ´æ´¢Çø (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //ÈÎÎñÑ¡Ïî (OS_ERR * )&err); //´æ·Å¸Ãº¯Êý´íÎóʱµÄ·µ»ØÖµ OS_CRITICAL_EXIT(); //Í˳öÁÙ½çÇø OSStart(&err); //¿ªÆôUCOSIII } //¿ªÊ¼ÈÎÎñÈÎÎñº¯Êý void start_task(void *p_arg) { OS_ERR err; CPU_SR_ALLOC(); p_arg = p_arg; CPU_Init(); #if OS_CFG_STAT_TASK_EN > 0u OSStatTaskCPUUsageInit(&err); //ͳ¼ÆÈÎÎñ #endif #ifdef CPU_CFG_INT_DIS_MEAS_EN //Èç¹ûʹÄÜÁ˲âÁ¿ÖжϹرÕʱ¼ä CPU_IntDisMeasMaxCurReset(); #endif #if OS_CFG_SCHED_ROUND_ROBIN_EN //µ±Ê¹ÓÃʱ¼äƬÂÖתµÄʱºò //ʹÄÜʱ¼äƬÂÖתµ÷¶È¹¦ÄÜ,ʱ¼äƬ³¤¶ÈΪ1¸öϵͳʱÖÓ½ÚÅÄ£¬¼È1*5=5ms OSSchedRoundRobinCfg(DEF_ENABLED,1,&err); #endif OS_CRITICAL_ENTER(); //½øÈëÁÙ½çÇø //´´½¨TASK1ÈÎÎñ OSTaskCreate((OS_TCB * )&Task1_TaskTCB, (CPU_CHAR * )"Task1 task", (OS_TASK_PTR )task1_task, (void * )0, (OS_PRIO )TASK1_TASK_PRIO, (CPU_STK * )&TASK1_TASK_STK[0], (CPU_STK_SIZE)TASK1_STK_SIZE/10, (CPU_STK_SIZE)TASK1_STK_SIZE, (OS_MSG_QTY )0, (OS_TICK )0, (void * )0, (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, (OS_ERR * )&err); //´´½¨TASK2ÈÎÎñ OSTaskCreate((OS_TCB * )&Task2_TaskTCB, (CPU_CHAR * )"task2 task", (OS_TASK_PTR )task2_task, (void * )0, (OS_PRIO )TASK2_TASK_PRIO, (CPU_STK * )&TASK2_TASK_STK[0], (CPU_STK_SIZE)TASK2_STK_SIZE/10, (CPU_STK_SIZE)TASK2_STK_SIZE, (OS_MSG_QTY )0, (OS_TICK )0, (void * )0, (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, (OS_ERR * )&err); OS_CRITICAL_EXIT(); //Í˳öÁÙ½çÇø OSTaskDel((OS_TCB*)0,&err); //ɾ³ýstart_taskÈÎÎñ×ÔÉí } // ??1:??PB0(LED0) void task1_task(void *p_arg) { OS_ERR err; while (1) { Key_Scan(); if (key_pressed) { current_task = 2; // ?????2 key_pressed = 0; printf("Switch to Task2\n"); } else { // LED0?? GPIO_SetBits(GPIOB, GPIO_Pin_0); // LED0? OSTimeDlyHMSM(0, 0, 0, 5000, OS_OPT_TIME_HMSM_STRICT, &err); // 500ms GPIO_ResetBits(GPIOB, GPIO_Pin_0); // LED0? OSTimeDlyHMSM(0, 0, 0, 5000, OS_OPT_TIME_HMSM_STRICT, &err); // 500ms } } } void task2_task(void *p_arg) { OS_ERR err; while (1) { Key_Scan(); if (key_pressed) { current_task = 1; // ?????1 key_pressed = 0; printf("Switch back to Task1\n"); } else { // ????2??? // ??:LED1?? GPIO_SetBits(GPIOB, GPIO_Pin_1); // LED1? OSTimeDlyHMSM(0, 0, 0, 5000, OS_OPT_TIME_HMSM_STRICT, &err); // 500ms GPIO_ResetBits(GPIOB, GPIO_Pin_1); // LED1? OSTimeDlyHMSM(0, 0, 0, 5000, OS_OPT_TIME_HMSM_STRICT, &err); // 500ms } } }我现在需要刚开始时B0(任务一)LED闪烁,当按下按键后(A0)给予信息量,使得代码进入(任务二),再次摁下按键,两个任务均不执行
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值