<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        調用freertosAPI函數的一些注意事項 IAR

        作者:未知   來源:布冬冬 的空間   點擊數:  更新時間:2014年08月16日   【字體:

         

         
         
        1. 將啟動匯編文件中的      替換
         
                DCD     vPortSVCHandler  //內核SVC中斷
                DCD     DebugMon_Handler
               ;  DCD     SVC_Handler
               ; DCD     DebugMon_Handler
         
                DCD     xPortPendSVHandler   //內核PendSV中斷
                DCD     xPortSysTickHandler   //內核SysTick中斷
               ; DCD     PendSV_Handler
               ; DCD     SysTick_Handler
         
        2. main函數中,在main函數的最后定義一個while(1);死循環。
         
           先是創建任務,然后是啟動任務調度函數。
         
           xTaskCreate( vIntegerGenerator, "IntGen", 200, NULL, 1, NULL);
           xTaskCreate( vStringPrinter, "String", 200, NULL, 2, NULL);
           vTaskStartScheduler();
         
        3. 創建信號量時,首先應在main函數之前定義一下全局變量
         
        xQueueHandle   xIntegerQueue;
        xQueueHandle   xStringQueue;
         
        4. 一些初始化的東西最好在main函數里面先初始化好,如GPIO的選擇、方向以及定時器的初始化。
         
           如果定時器的初始化放在任務里面,有可能導致定時器無法正常工作。因為任務在循環執行,可能定時器還沒到定時時間,就又被重新初始化了。
         
        5. 加庫文件stdio.h,執行printf語句,可在IO終端里面查看。
         
        6. 在任務函數里面,定義變量放在for循環外面,其他放在for循環里面。
         
         
        static void vStringPrinter( void *pvParameters )
        {
          char *pcString;
          for(;;)
          {
            xQueueReceive( xStringQueue, &pcString, portMAX_DELAY);
            printf(pcString);
          }
        }
         
        7. 如果任務遇到中斷,需要強制上下文切換。中斷里面用的上下文切換是taskYIELD();而不是vTaskSwitchContext 里面有了個PendSV中斷。
         
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮