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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1313|回復: 1
打印 上一主題 下一主題
收起左側

求問FreeRtos有沒有某個函數可使程序的線程直接跳轉

[復制鏈接]
跳轉到指定樓層
樓主
小弟最近移植了一個FreeRtos到STM32F103CB系列的芯片中,遇到一個問題,問題如下:
{

    //創建數據發送任務
    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);
                              
        //創建數據解析任務
    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);
                              
    //創建聯網任務
    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);
                              
    //創建TASK2任務
        //采集數據任務
    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);




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

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

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

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

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩涩视频在线观看 | 成人免费在线观看 | 99福利| 久久国产一区 | 亚洲天堂成人在线视频 | 国产欧美精品一区二区 | 国产96在线 | 一区二区三区av | 九九亚洲 | 国产清纯白嫩初高生在线播放视频 | 国产精品一区一区三区 | 成人精品福利 | 日韩精品在线一区二区 | 国产午夜精品一区二区三区嫩草 | 久久综合一区 | 自拍偷拍亚洲视频 | 精品国产一区二区在线 | 日韩欧美不卡 | 精品免费国产视频 | 精品国产综合 | 欧美一区二区三区久久精品 | 国产成人综合一区二区三区 | 国产永久免费 | 国产精品久久亚洲 | 日韩精品 电影一区 亚洲 | 欧美高清hd| 国产无人区一区二区三区 | 国产一区二区不卡 | 日韩在线日韩 | av一区二区在线观看 | 国产激情在线播放 | 国产色片在线 | 69福利影院 | 国产精品福利一区二区三区 | 国产精品成人国产乱一区 | 一区二区三区欧美 | 少妇一级淫片免费播放 | 一级视频在线免费观看 | 成人毛片网 | 中午字幕在线观看 | 一区二区日本 |