久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3895|回復: 9
收起左側

UCOSIII控制STM32 wifi小車代碼

  [復制鏈接]
ID:259898 發表于 2019-1-14 00:04 | 顯示全部樓層 |閱讀模式
對于ucos敢興趣朋友,可以參考這例程,我這使用信號量,然后直接控制為wifi小車

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "key.h"
  7. #include "pwm.h"
  8. #include "track.h"
  9. #include "includes.h"


  10. //UCOSIII中以下優先級用戶程序不能使用,ALIENTEK
  11. //將這些優先級分配給了UCOSIII的5個系統內部任務
  12. //優先級0:中斷服務服務管理任務 OS_IntQTask()
  13. //優先級1:時鐘節拍任務 OS_TickTask()
  14. //優先級2:定時任務 OS_TmrTask()
  15. //優先級OS_CFG_PRIO_MAX-2:統計任務 OS_StatTask()
  16. //優先級OS_CFG_PRIO_MAX-1:空閑任務 OS_IdleTask()


  17. #define START_TASK_PRIO                3            //任務優先級
  18. #define START_STK_SIZE                 1024         //任務堆棧大小        
  19. OS_TCB StartTaskTCB;                   //任務控制塊
  20. CPU_STK START_TASK_STK[START_STK_SIZE];//任務堆棧        
  21. void start_task(void *p_arg);          //任務函數

  22. #define forward_TASK_PRIO                4              //任務優先級
  23. #define forward_STK_SIZE                 128            //任務堆棧大小        
  24. OS_TCB forward_TaskTCB;                    //任務控制塊
  25. CPU_STK forward_TASK_STK[forward_STK_SIZE];//任務堆棧        
  26. void forward_task(void *p_arg);            //任務函數

  27. #define back_TASK_PRIO                5          //任務優先級
  28. #define back_STK_SIZE                 128        //任務堆棧大小
  29. OS_TCB back_TaskTCB;                 //任務控制塊
  30. CPU_STK back_TASK_STK[back_STK_SIZE];//任務堆棧        
  31. void back_task(void *p_arg);         //任務函數

  32. #define stop_TASK_PRIO                6          //任務優先級
  33. #define stop_STK_SIZE                 128        //任務堆棧大小        
  34. OS_TCB stop_TaskTCB;                 //任務控制塊
  35. CPU_STK stop_TASK_STK[stop_STK_SIZE];//任務堆棧        
  36. void stop_task(void *p_arg);         //任務函數

  37. #define turnright_TASK_PRIO                7                //任務優先級
  38. #define turnright_STK_SIZE                 128              //任務堆棧大小        
  39. OS_TCB turnright_TaskTCB;                      //任務控制塊
  40. CPU_STK turnright_TASK_STK[turnright_STK_SIZE];//任務堆棧        
  41. void turnright_task(void *p_arg);              //任務函數

  42. #define turnleft_TASK_PRIO                8                //任務優先級
  43. #define turnleft_STK_SIZE                 128              //任務堆棧大小        
  44. OS_TCB turnleft_TaskTCB;                       //任務控制塊
  45. CPU_STK turnleft_TASK_STK[turnleft_STK_SIZE];  //任務堆棧        
  46. void turnleft_task(void *p_arg);               //任務函數

  47. #define quick_TASK_PRIO                9            //任務優先級
  48. #define quick_STK_SIZE                 128          //任務堆棧大小        
  49. OS_TCB quick_TaskTCB;                  //任務控制塊
  50. CPU_STK quick_TASK_STK[quick_STK_SIZE];//任務堆棧        
  51. void quick_task(void *p_arg);          //任務函數

  52. #define slow_TASK_PRIO                10           //任務優先級
  53. #define slow_STK_SIZE                 128          //任務堆棧大小        
  54. OS_TCB slow_TaskTCB;                   //任務控制塊
  55. CPU_STK slow_TASK_STK[slow_STK_SIZE];  //任務堆棧        
  56. void slow_task(void *p_arg);           //任務函數

  57. #define track_TASK_PRIO                11           //任務優先級
  58. #define track_STK_SIZE                 128          //任務堆棧大小        
  59. OS_TCB track_TaskTCB;                  //任務控制塊
  60. CPU_STK track_TASK_STK[track_STK_SIZE];//任務堆棧        
  61. void track_task(void *p_arg);          //任務函數

  62. #define usartcheck_TASK_PRIO                12               //任務優先級
  63. #define usartcheck_STK_SIZE                 128              //任務堆棧大小        
  64. OS_TCB usartcheck_TaskTCB;                       //任務控制塊
  65. CPU_STK usartcheck_TASK_STK[usartcheck_STK_SIZE];//任務堆棧        
  66. void usartcheck_task(void *p_arg);               //任務函數

  67. OS_SEM        forward_SEM;        //定義信號量
  68. OS_SEM        back_SEM;                  //定義信號量
  69. OS_SEM        stop_SEM;                  //定義信號量
  70. OS_SEM        turnright_SEM;//定義信號量
  71. OS_SEM        turnleft_SEM;        //定義信號量
  72. OS_SEM        quick_SEM;                //定義信號量
  73. OS_SEM        slow_SEM;                  //定義信號量
  74. OS_SEM        track_SEM;                //定義信號量

  75. //s16 ini_ccr=60;//賦值給比較捕獲寄存器CCR的初值
  76. //s16 com_ccr=60;//賦值給比較捕獲寄存器CCR的公共值
  77. //主函數
  78. int main(void)
  79. {
  80.         OS_ERR err;
  81.         CPU_SR_ALLOC();
  82.         
  83.         delay_init();      //時鐘初始化
  84.         //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷分組配置
  85.         //uart_init(115200); //串口初始化
  86.         //LED_Init();      //LED初始化        
  87.         //LCD_Init();                         //LCD初始化        
  88.         //KEY_Init();                         //按鍵初始化
  89.         TIM1_PWM_Init(100,9);
  90.         uart_init(115200); //串口初始化
  91.         track_init();
  92.         
  93.         OSInit(&err);                            //初始化UCOSIII
  94.         OS_CRITICAL_ENTER();        //進入臨界區                        
  95.         //創建開始任務
  96.         OSTaskCreate((OS_TCB         * )&StartTaskTCB,                //任務控制塊
  97.                                  (CPU_CHAR        * )"start task",                 //任務名字
  98.                  (OS_TASK_PTR )start_task,                         //任務函數
  99.                  (void                * )0,                                        //傳遞給任務函數的參數
  100.                  (OS_PRIO          )START_TASK_PRIO,     //任務優先級
  101.                  (CPU_STK   * )&START_TASK_STK[0],        //任務堆棧基地址
  102.                  (CPU_STK_SIZE)START_STK_SIZE/10,        //任務堆棧深度限位
  103.                  (CPU_STK_SIZE)START_STK_SIZE,                //任務堆棧大小
  104.                  (OS_MSG_QTY  )0,                                        //任務內部消息隊列能夠接收的最大消息數目,為0時禁止接收消息
  105.                  (OS_TICK          )0,                                        //當使能時間片輪轉時的時間片長度,為0時為默認長度,
  106.                  (void           * )0,                                        //用戶補充的存儲區
  107.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任務選項
  108.                  (OS_ERR         * )&err);                                //存放該函數錯誤時的返回值
  109.         OS_CRITICAL_EXIT();        //退出臨界區         
  110.         OSStart(&err);      //開啟UCOSIII
  111. }

  112. //開始任務函數
  113. void start_task(void *p_arg)//void *p_arg是空類型(無類型)指針,由函數內部強制轉換為某一具體類型的指針
  114. {
  115.         OS_ERR err;
  116.         CPU_SR_ALLOC();
  117.         p_arg = p_arg;//表示暫時不用p_arg,防止編譯器告警
  118.         //(void)p_arg;//表示暫時不用p_arg,防止編譯器告警
  119.         
  120.         CPU_Init();
  121. #if OS_CFG_STAT_TASK_EN > 0u
  122.    OSStatTaskCPUUsageInit(&err);          //統計任務               
  123. #endif
  124.         
  125. #ifdef CPU_CFG_INT_DIS_MEAS_EN                //如果使能了測量中斷關閉時間
  126.     CPU_IntDisMeasMaxCurReset();        
  127. #endif
  128.         
  129. #if        OS_CFG_SCHED_ROUND_ROBIN_EN  //當使用時間片輪轉的時候
  130.          //使能時間片輪轉調度功能,時間片長度為1個系統時鐘節拍,既1*5=5ms
  131.         OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  
  132. #endif        
  133.                
  134.         OS_CRITICAL_ENTER();        //進入臨界區
  135.         
  136.         OSSemCreate ((OS_SEM*        )&forward_SEM,       //創建信號量forward_SEM
  137.                  (CPU_CHAR*        )"forward_SEM",
  138.                  (OS_SEM_CTR)0,               
  139.                  (OS_ERR*        )&err);
  140.         OSSemCreate ((OS_SEM*        )&back_SEM,          //創建信號量back_SEM
  141.                  (CPU_CHAR*        )"back_SEM",
  142.                  (OS_SEM_CTR)0,               
  143.                  (OS_ERR*        )&err);
  144.         OSSemCreate ((OS_SEM*        )&stop_SEM,          //創建信號量stop_SEM
  145.                  (CPU_CHAR*        )"stop_SEM",
  146.                  (OS_SEM_CTR)0,               
  147.                  (OS_ERR*        )&err);
  148.         OSSemCreate ((OS_SEM*        )&turnright_SEM,     //創建信號量turnright_SEM
  149.                  (CPU_CHAR*        )"turnright_SEM",
  150.                  (OS_SEM_CTR)0,               
  151.                  (OS_ERR*        )&err);
  152.         OSSemCreate ((OS_SEM*        )&turnleft_SEM,      //創建信號量turnleft_SEM
  153.                  (CPU_CHAR*        )"turnleft_SEM",
  154.                  (OS_SEM_CTR)0,               
  155.                  (OS_ERR*        )&err);
  156.         OSSemCreate ((OS_SEM*        )&quick_SEM,         //創建信號量quick_SEM
  157.                  (CPU_CHAR*        )"quick_SEM",
  158.                  (OS_SEM_CTR)0,               
  159.                  (OS_ERR*        )&err);
  160.         OSSemCreate ((OS_SEM*        )&slow_SEM,          //創建信號量slow_SEM
  161.                  (CPU_CHAR*        )"slow_SEM",
  162.                  (OS_SEM_CTR)0,               
  163.                  (OS_ERR*        )&err);
  164.         OSSemCreate ((OS_SEM*        )&track_SEM,         //創建信號量track_SEM
  165.                  (CPU_CHAR*        )"track_SEM",
  166.                  (OS_SEM_CTR)0,               
  167.                  (OS_ERR*        )&err);
  168.         //創建任務forward_task
  169.         OSTaskCreate((OS_TCB         * )&forward_TaskTCB,               
  170.                                  (CPU_CHAR        * )"forward_task",                 
  171.                  (OS_TASK_PTR )forward_task,                        
  172.                  (void                * )0,                                       
  173.                  (OS_PRIO          )forward_TASK_PRIO,     
  174.                  (CPU_STK   * )&forward_TASK_STK[0],        
  175.                  (CPU_STK_SIZE)forward_STK_SIZE/10,        
  176.                  (CPU_STK_SIZE)forward_STK_SIZE,               
  177.                  (OS_MSG_QTY  )0,                                       
  178.                  (OS_TICK          )0,                                          
  179.                  (void           * )0,                                       
  180.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  181.                  (OS_ERR         * )&err);                        
  182.         //創建任務back_task
  183.         OSTaskCreate((OS_TCB         * )&back_TaskTCB,               
  184.                                  (CPU_CHAR        * )"back_task",                 
  185.                  (OS_TASK_PTR )back_task,                        
  186.                  (void                * )0,                                       
  187.                  (OS_PRIO          )back_TASK_PRIO,     
  188.                  (CPU_STK   * )&back_TASK_STK[0],        
  189.                  (CPU_STK_SIZE)back_STK_SIZE/10,        
  190.                  (CPU_STK_SIZE)back_STK_SIZE,               
  191.                  (OS_MSG_QTY  )0,                                       
  192.                  (OS_TICK          )0,                                          
  193.                  (void           * )0,                                       
  194.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  195.                  (OS_ERR         * )&err);        
  196.         //創建任務stop_task
  197.         OSTaskCreate((OS_TCB         * )&stop_TaskTCB,               
  198.                                  (CPU_CHAR        * )"stop_task",                 
  199.                  (OS_TASK_PTR )stop_task,                        
  200.                  (void                * )0,                                       
  201.                  (OS_PRIO          )stop_TASK_PRIO,     
  202.                  (CPU_STK   * )&stop_TASK_STK[0],        
  203.                  (CPU_STK_SIZE)stop_STK_SIZE/10,        
  204.                  (CPU_STK_SIZE)stop_STK_SIZE,               
  205.                  (OS_MSG_QTY  )0,                                       
  206.                  (OS_TICK          )0,                                          
  207.                  (void           * )0,                                       
  208.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  209.                  (OS_ERR         * )&err);        
  210.         //創建任務turnright_task
  211.         OSTaskCreate((OS_TCB         * )&turnright_TaskTCB,               
  212.                                  (CPU_CHAR        * )"turnright_task",                 
  213.                  (OS_TASK_PTR )turnright_task,                        
  214.                  (void                * )0,                                       
  215.                  (OS_PRIO          )turnright_TASK_PRIO,     
  216.                  (CPU_STK   * )&turnright_TASK_STK[0],        
  217.                  (CPU_STK_SIZE)turnright_STK_SIZE/10,        
  218.                  (CPU_STK_SIZE)turnright_STK_SIZE,               
  219.                  (OS_MSG_QTY  )0,                                       
  220.                  (OS_TICK          )0,                                          
  221.                  (void           * )0,                                       
  222.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  223.                  (OS_ERR         * )&err);        
  224.   //創建任務turnleft_task
  225.         OSTaskCreate((OS_TCB         * )&turnleft_TaskTCB,               
  226.                                  (CPU_CHAR        * )"turnleft_task",                 
  227.                  (OS_TASK_PTR )turnleft_task,                        
  228.                  (void                * )0,                                       
  229.                  (OS_PRIO          )turnleft_TASK_PRIO,     
  230.                  (CPU_STK   * )&turnleft_TASK_STK[0],        
  231.                  (CPU_STK_SIZE)turnleft_STK_SIZE/10,        
  232.                  (CPU_STK_SIZE)turnleft_STK_SIZE,               
  233.                  (OS_MSG_QTY  )0,                                       
  234.                  (OS_TICK          )0,                                          
  235.                  (void           * )0,                                       
  236.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  237.                  (OS_ERR         * )&err);        
  238.         //創建任務quick_task
  239.         OSTaskCreate((OS_TCB         * )&quick_TaskTCB,               
  240.                                  (CPU_CHAR        * )"quick_task",                 
  241.                  (OS_TASK_PTR )quick_task,                        
  242.                  (void                * )0,                                       
  243.                  (OS_PRIO          )quick_TASK_PRIO,     
  244.                  (CPU_STK   * )&quick_TASK_STK[0],        
  245.                  (CPU_STK_SIZE)quick_STK_SIZE/10,        
  246.                  (CPU_STK_SIZE)quick_STK_SIZE,               
  247.                  (OS_MSG_QTY  )0,                                       
  248.                  (OS_TICK          )0,                                          
  249.                  (void           * )0,                                       
  250.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  251.                  (OS_ERR         * )&err);        
  252.         //創建任務slow_task
  253.         OSTaskCreate((OS_TCB         * )&slow_TaskTCB,               
  254.                                  (CPU_CHAR        * )"slow_task",                 
  255.                  (OS_TASK_PTR )slow_task,                        
  256.                  (void                * )0,                                       
  257.                  (OS_PRIO          )slow_TASK_PRIO,     
  258.                  (CPU_STK   * )&slow_TASK_STK[0],        
  259.                  (CPU_STK_SIZE)slow_STK_SIZE/10,        
  260.                  (CPU_STK_SIZE)slow_STK_SIZE,               
  261.                  (OS_MSG_QTY  )0,                                       
  262.                  (OS_TICK          )0,                                          
  263.                  (void           * )0,                                       
  264.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  265.                  (OS_ERR         * )&err);        
  266.         //創建任務track_task
  267.         OSTaskCreate((OS_TCB         * )&track_TaskTCB,               
  268.                                  (CPU_CHAR        * )"track_task",                 
  269.                  (OS_TASK_PTR )track_task,                        
  270.                  (void                * )0,                                       
  271.                  (OS_PRIO          )track_TASK_PRIO,     
  272.                  (CPU_STK   * )&track_TASK_STK[0],        
  273.                  (CPU_STK_SIZE)track_STK_SIZE/10,        
  274.                  (CPU_STK_SIZE)track_STK_SIZE,               
  275.                  (OS_MSG_QTY  )0,                                       
  276.                  (OS_TICK          )0,                                          
  277.                  (void           * )0,                                       
  278.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  279.                  (OS_ERR         * )&err);
  280.         //創建任務usartcheck_task
  281.         OSTaskCreate((OS_TCB         * )&usartcheck_TaskTCB,               
  282.                                  (CPU_CHAR        * )"usartcheck_task",                 
  283.                  (OS_TASK_PTR )usartcheck_task,                        
  284.                  (void                * )0,                                       
  285.                  (OS_PRIO          )usartcheck_TASK_PRIO,     
  286.                  (CPU_STK   * )&usartcheck_TASK_STK[0],        
  287.                  (CPU_STK_SIZE)usartcheck_STK_SIZE/10,        
  288.                  (CPU_STK_SIZE)usartcheck_STK_SIZE,               
  289.                  (OS_MSG_QTY  )0,                                       
  290.                  (OS_TICK          )0,                                          
  291.                  (void           * )0,                                       
  292.                  (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
  293.                  (OS_ERR         * )&err);

  294.         OS_CRITICAL_EXIT();        //退出臨界區
  295.         OSTaskDel((OS_TCB*)0,&err);        //刪除start_task任務自身
  296. }

  297. //任務usartcheck_task的任務函數
  298. void usartcheck_task(void *p_arg)
  299. {
  300.         OS_ERR err;
  301.         u8 Res;
  302.         while(1)
  303.         {
  304.                 if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)!=RESET)
  305.                 {
  306.                         Res =USART_ReceiveData(USART1);//(USART1->DR);        //讀取接收到的數據
  307.                         switch(Res)//
  308.                   {
  309.                                 case 'A'://前進
  310.                                 {
  311.                                         OSSemPost(&forward_SEM,OS_OPT_POST_1,&err);  //發送信號量forward_SEM
  312.           break;
  313.                                 }
  314.                                 case 'b'://后退
  315.                                 {
  316.           OSSemPost(&back_SEM,OS_OPT_POST_1,&err);     //發送信號量back_SEM
  317.           break;
  318.                                 }
  319.                                 case 'C'://停止
  320.                                 {        
  321.           OSSemPost(&stop_SEM,OS_OPT_POST_1,&err);     //發送信號量stop_SEM
  322.           break;
  323.                                 }
  324.                                 case 'r'://右轉
  325.                                 {        
  326.                                         OSSemPost(&turnright_SEM,OS_OPT_POST_1,&err);//發送信號量turnright_SEM
  327.           break;
  328.                                 }
  329.                                 case 'l'://左轉
  330.                                 {        
  331.                                         OSSemPost(&turnleft_SEM,OS_OPT_POST_1,&err); //發送信號量turnleft_SEM
  332.           break;
  333.                                 }        
  334.                                 case 'k'://加速
  335.                                 {        
  336.                             OSSemPost(&quick_SEM,OS_OPT_POST_1,&err);    //發送信號量quick_SEM
  337.           break;
  338.                                 }        
  339.                                 case 'm'://減速                 
  340.                                 {        
  341.           OSSemPost(&slow_SEM,OS_OPT_POST_1,&err);     //發送信號量slow_SEM
  342.           break;
  343.                                 }
  344.                                 case 't'://循跡                  
  345.                                 {                        
  346.           OSSemPost(&track_SEM,OS_OPT_POST_1,&err);    //發送信號量track_SEM
  347.           break;
  348.                                 }
  349.                           default: break;
  350.                   }               
  351.                 }         
  352.         }
  353. }
  354. //任務forward_task的任務函數
  355. void forward_task(void *p_arg)
  356. {
  357.         OS_ERR err;
  358.         OSSemPend(&forward_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);  //等待信號量
  359.         forward(ini_ccr);        
  360. }
  361. //任務back_task的任務函數
  362. void back_task(void *p_arg)
  363. {
  364.         OS_ERR err;
  365.         OSSemPend(&back_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);     //等待信號量
  366.   back(ini_ccr);
  367. }
  368. //任務stop_task的任務函數
  369. void stop_task(void *p_arg)
  370. {
  371.         OS_ERR err;
  372.         OSSemPend(&stop_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);     //等待信號量
  373.   stop();
  374. }
  375. //任務turnright_task的任務函數
  376. void turnright_task(void *p_arg)
  377. {
  378.         OS_ERR err;
  379.         OSSemPend(&turnright_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);//等待信號量
  380.   turn_right();
  381. }
  382. //任務turnleft_task的任務函數
  383. void turnleft_task(void *p_arg)
  384. {
  385.         OS_ERR err;
  386.         OSSemPend(&turnleft_SEM,0,OS_OPT_PEND_BLOCKING,0,&err); //等待信號量
  387.   turn_left();
  388. }
  389. //任務quick_task的任務函數
  390. void quick_task(void *p_arg)
  391. {
  392.         OS_ERR err;
  393.         OSSemPend(&quick_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);    //等待信號量
  394.   quick();
  395. }
  396. //任務slow_task的任務函數
  397. void slow_task(void *p_arg)
  398. {
  399.         OS_ERR err;
  400.         OSSemPend(&slow_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);     //等待信號量
  401.   slow();
  402. }
  403. //任務track_task的任務函數
  404. void track_task(void *p_arg)
  405. {
  406.         OS_ERR err;
  407.         OSSemPend(&track_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);    //等待信號量
  408.   while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET)
  409.         {
  410.                 track();
  411.         }
  412. }
復制代碼

所有資料51hei提供下載:
STM32小車(2016嵌入式小車)3 - ucosiii - inquire(sem).7z (393.08 KB, 下載次數: 81)
回復

使用道具 舉報

ID:1 發表于 2019-1-14 03:18 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

ID:29043 發表于 2019-6-12 16:47 | 顯示全部樓層
這么好的東西當然要下載啦
回復

使用道具 舉報

ID:483023 發表于 2019-6-15 00:02 來自手機 | 顯示全部樓層
剛好可以用上
回復

使用道具 舉報

ID:483023 發表于 2019-6-21 23:57 來自手機 | 顯示全部樓層
好多東西都沒說,比如引腳接法,怎么用,有什么用
回復

使用道具 舉報

ID:592065 發表于 2019-7-29 15:46 | 顯示全部樓層
這么好的東西當然要下載啦
回復

使用道具 舉報

ID:292427 發表于 2019-9-6 23:26 | 顯示全部樓層
這是stm32F103單片機的嗎
回復

使用道具 舉報

ID:478085 發表于 2019-9-16 11:00 | 顯示全部樓層
學習UCOS中,正好用上,謝謝@!
回復

使用道具 舉報

ID:306573 發表于 2019-9-19 15:33 | 顯示全部樓層
學習UCOS中,正好用上。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久精品日日躁夜夜躁国产 | 一级一级一级毛片 | 欧美日韩精品综合 | 91影院| 亚洲综合天堂 | 精精国产xxxx视频在线野外 | 国产精品久久久久久婷婷天堂 | 99热精品在线观看 | 一区二区三区四区在线视频 | 久久久久亚洲 | 免费在线看黄视频 | 九色 在线 | 福利网址 | 97国产一区二区精品久久呦 | 午夜小电影 | 国产伊人久久久 | 在线免费小视频 | 91高清视频在线 | 国产一区二区三区在线 | 亚洲午夜精品在线观看 | www国产精品 | 国内精品免费久久久久软件老师 | 伊人网在线播放 | aaaa一级毛片 | 久久精品国产久精国产 | 精品国产成人 | 九九九久久国产免费 | 日韩色综合 | 9久久婷婷国产综合精品性色 | 国产传媒在线观看 | 奇米av| 欧美视频二区 | 综合色婷婷 | 久久国产婷婷国产香蕉 | 国产精品视频观看 | 亚洲精品二三区 | 99视频在线 | 蜜臀网站 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产99久久精品一区二区永久免费 | 午夜影院黄 |