欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1503|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求問FreeRtos有沒有某個函數(shù)可使程序的線程直接跳轉(zhuǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:704738 發(fā)表于 2021-6-20 21:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟最近移植了一個FreeRtos到STM32F103CB系列的芯片中,遇到一個問題,問題如下:
{

    //創(chuàng)建數(shù)據(jù)發(fā)送任務(wù)
    xTaskCreate((TaskFunction_t )gsm4_task,            
                (const char*    )"gsm4_task",           
                (uint16_t       )GSM4_STK_SIZE,        
                (void*          )NULL,                  
                (UBaseType_t    )GSM4_TASK_PRIO,        
                (TaskHandle_t*  )&Gsm4Task_Handler);
                              
        //創(chuàng)建數(shù)據(jù)解析任務(wù)
    xTaskCreate((TaskFunction_t )gsm4_data_task,            
                (const char*    )"gsm4_data_task",           
                (uint16_t       )GSM4_DATA_STK_SIZE,        
                (void*          )NULL,                  
                (UBaseType_t    )GSM4_DATA_TASK_PRIO,        
                (TaskHandle_t*  )&gsm4_data_Task_Handler);
                              
    //創(chuàng)建聯(lián)網(wǎng)任務(wù)
    xTaskCreate((TaskFunction_t )gsm4_check_task,            
                (const char*    )"gsm4_check_task",           
                (uint16_t       )GSM4_CHECK_STK_SIZE,        
                (void*          )NULL,                  
                (UBaseType_t    )GSM4_CHECK_TASK_PRIO,        
                (TaskHandle_t*  )&Gsm4_check_Task_Handler);
                              
    //創(chuàng)建TASK2任務(wù)
        //采集數(shù)據(jù)任務(wù)
    xTaskCreate((TaskFunction_t )task2_task,     
                (const char*    )"task2_task",   
                (uint16_t       )TASK2_STK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )TASK2_TASK_PRIO,
                (TaskHandle_t*  )&Task2Task_Handler);




}
    如上是我的一系列任務(wù)函數(shù),在task2_task任務(wù)中,我有一個使用485采集數(shù)據(jù)函數(shù)。如下:
   {
   xTaskNotifyGive(Task2Task_Handler);//發(fā)送采集數(shù)據(jù)任務(wù)通知,采集數(shù)據(jù)
        while(1)
        {
        NotifyValue=ulTaskNotifyTake(pdTRUE,0);        //獲取任務(wù)通知
        xTaskNotifyGive(Task2Task_Handler);//發(fā)送采集數(shù)據(jù)任務(wù)通知,采集數(shù)據(jù)
               
                if(NotifyValue==1)                                                                        //清零之前的任務(wù)通知值為1,說明任務(wù)通知有效
                {
                        vTaskSuspend(Oled_Task_Handler);
                        my_printf("7WAITTING...");
                        memset(buf,0,sizeof(buf));        //清空數(shù)據(jù)緩存
                        memset(ec_data.value,0,sizeof(ec_data.value));        //清空數(shù)據(jù)緩存
                        // u3_printf("接收到任務(wù)通知,采集數(shù)據(jù)\r\n");

                        Event_Scheduling();
                 }
        }
   }   
    在該函數(shù)中,我用來采集某個傳感器的數(shù)據(jù),但應(yīng)要求,這必須得在一個周期內(nèi)采集完成,采集完成后,需要計算這個數(shù)據(jù)的每秒的輸出量。
    其架構(gòu)大概就是:
    0-20s采集數(shù)據(jù)
    25s計算數(shù)據(jù)
    30s清空485串口的緩沖區(qū)
    所以我使用了一個TIM2去計時,然后發(fā)現(xiàn),我的定時器計數(shù),但是系統(tǒng)沒有執(zhí)行我原本設(shè)想的485發(fā)送數(shù)據(jù)函數(shù)。
   
   串口1的發(fā)送數(shù)據(jù)是我用于調(diào)試使用的。
   然而我發(fā)現(xiàn)定時器有在不停計數(shù),但是并沒有執(zhí)行我的任務(wù)。
  {
rain_time = 195
rain_time = 196
rain_time = 197
rain_time = 198
rain_tim% = 199
vain_time0= 200
rain_time = 201
卹ain_time = 202

  }
   按照我的設(shè)定在時間等于20s 即計數(shù)為200時,并且發(fā)送485數(shù)據(jù),且延時4s。但實際上并沒有執(zhí)行我的函數(shù), 我個人猜測是任務(wù)執(zhí)行過程中,即使?jié)M足了其時間的條件,本質(zhì)上也還是沒有進入到該函數(shù)中,估計在跑其他任務(wù)(我個人猜測)。
   最后小弟請問該怎么才能解決這個問題,麻煩各位大佬了!!

1.png (49.76 KB, 下載次數(shù): 42)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2021-6-21 17:37 | 只看該作者
先畫個流程圖,在邏輯上要走得通,而后再寫程序。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表