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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MSP430G2553時間片輪詢代碼結構

[復制鏈接]
跳轉到指定樓層
樓主
ID:1038349 發表于 2023-4-5 11:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <msp430g2553.h>

#include <TimeSlice.h>
#include "gpio.h"
#include "uart.h"

int main(void)
{
    // 停用看門狗定時器
    WDTCTL = WDTPW + WDTHOLD;

    /* User code init begin */
    gpio_init();//GPIO初始化
    uart_init();//串口初始化
    /* User code init end */

    // 初始化系統時鐘和定時器
    initClock();
    initTimer();
    // 啟用全局中斷
    __enable_interrupt();
    while(1)
    {
        // 在主循環中執行其他任務
        // ...
        TaskProcess();  //時間片任務處理函數

    }
}
// Timer_A中斷服務程序
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A_ISR(void)
{
    // 在中斷服務程序中執行需要定時的任務
    // ...
    TaskRemarks();  //時間片任務標志處理函數
}


  1. /*
  2. * TimeSlice.h
  3. *
  4. *  Created on: 2023年3月31日
  5. *      Author: Long
  6. *      如何使用:
  7. *          1、將對應的.c和.h兩個文件導入到代碼工程里面
  8. *          2、在main函數的while(1)里面調用TaskProcess(),調用時記得添加 -- #include "TimeSlice.h"
  9. *          3、在系統時鐘或者定時器里面調用TaskRemarks(),調用時記得添加 -- #include "TimeSlice.h"
  10. *          4、在TimeSlice.c里面的task1()、task2()、task3()填寫任務代碼,可以根據實際需要自己添加新的任務函數
  11. */

  12. #ifndef TIMESLICE_TIMESLICE_H_
  13. #define TIMESLICE_TIMESLICE_H_

  14. /* Private includes ----------------------------------------------------------*/
  15. /* USER CODE BEGIN Includes */
  16. #include <msp430g2553.h>
  17. /* USER CODE END Includes */

  18. typedef unsigned char uint8;

  19. void Task1();// 任務1
  20. void Task2();// 任務2
  21. void Task3();// 任務3
  22. void TaskRemarks(void);//任務標志處理
  23. void TaskProcess(void);//任務處理

  24. #define TASKS_MAX 3

  25. //----任務結構----
  26. typedef struct _TASK_COMPONENTS
  27. {
  28.     uint8 Run;                 // 程序運行標記:0-不運行,1運行
  29.     uint8 Timer;              // 計時器
  30.     uint8 ItvTime;              // 任務運行間隔時間
  31.     void (*TaskHook)(void);    // 要運行的任務函數
  32. } TASK_COMPONENTS;       // 任務定義

  33. ////----任務清單----
  34. //typedef enum _TASK_LIST
  35. //{
  36. //    TASK1,            //任務1
  37. //    TASK2,            //任務2
  38. //    TASK3,            //任務3
  39. //     // 這里添加你的任務。。。。
  40. //     TASKS_MAX                                           // 總的可供分配的定時任務數目
  41. //} TASK_LIST;


  42. /* Private user code ---------------------------------------------------------*/
  43. /* USER CODE BEGIN 0 */

  44. /* USER CODE END 0 */

  45. #endif /* TIMESLICE_TIMESLICE_H_ */
復制代碼

  1. #include <TimeSlice.h>


  2. /**************************************************************************************
  3. * Variable definition
  4. * 在定義變量時,我們已經初始化了值,這些值的初始化,非常重要,跟具體的執行時間優先級等都有關系,這個需要自己掌握。
  5. * 時間片的大小需要自己注意
  6. **************************************************************************************/
  7. TASK_COMPONENTS TaskComps[TASKS_MAX] =
  8. {
  9.     {0, 60, 100, Task1},            // 任務1
  10.     {0, 20, 100, Task2},            // 任務2
  11.     {0, 30, 100, Task3},            // 任務3

  12.      // 這里添加你的任務。。。。
  13. };

  14. ///**************************************************************************************
  15. //* FunctionName : TimerInterrupt()
  16. //* Description : 定時中斷服務函數
  17. //* EntryParameter : None
  18. //* ReturnValue : None
  19. //* 將定時中斷服務函數放在定時器中斷里面
  20. //**************************************************************************************/
  21. //void TimerInterrupt(void)
  22. //{
  23. //    TaskRemarks( );
  24. //}

  25. /**************************************************************************************
  26. * FunctionName   : TaskRemarks()
  27. * Description    : 任務標志處理
  28. * EntryParameter : None
  29. * ReturnValue    : None
  30. * 任務運行標志出來,此函數就相當于中斷服務函數,需要在定時器的中斷服務函數中調用此函數,這里獨立出來,并于移植和理解。
  31. **************************************************************************************/
  32. void TaskRemarks(void)
  33. {
  34.    uint8 i;

  35.    for (i=0; i<TASKS_MAX; i++)          // 逐個任務時間處理
  36.    {
  37.         if (TaskComps[i].Timer)          // 時間不為0
  38.        {
  39.            TaskComps[i].Timer--;         // 減去一個節拍
  40.            if (TaskComps[i].Timer == 0)       // 時間減完了
  41.            {
  42.                 TaskComps[i].Timer = TaskComps[i].ItvTime;       // 恢復計時器值,從新下一次
  43.                 TaskComps[i].Run = 1;           // 任務可以運行
  44.            }
  45.        }
  46.   }
  47. }

  48. /**************************************************************************************
  49. * FunctionName   : TaskProcess()
  50. * Description    : 任務處理
  51. * EntryParameter : None
  52. * ReturnValue    : None
  53. * 此函數就是判斷什么時候該執行那一個任務了,實現任務的管理操作,
  54. * 應用者只需要在main()函數中調用此函數就可以了,并不需要去分別調用和處理任務函數。
  55. **************************************************************************************/
  56. void TaskProcess(void)
  57. {
  58.     uint8 i;

  59.     for (i=0; i<TASKS_MAX; i++)                 // 逐個任務時間處理
  60.     {
  61.          if (TaskComps[i].Run)                  // 時間不為0
  62.         {
  63.              TaskComps[i].TaskHook();       // 運行任務
  64.              TaskComps[i].Run = 0;          // 標志清0
  65.         }
  66.     }
  67. }



  68. /* Private user code ---------------------------------------------------------*/
  69. /* USER CODE BEGIN 0 */

  70. /* USER CODE END 0 */

  71. void Task1()// 任務1
  72. {
  73.     led1_toggle();
  74. }
  75. void Task2()// 任務2
  76. {
  77.     led2_toggle();
  78. }

  79. void Task3()// 任務3
  80. {

  81. }

復制代碼

代碼: G2_Basic.zip (96.57 KB, 下載次數: 8)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久6视频 | 精品乱码一区二区三四区视频 | 九九热这里只有精品在线观看 | 成人夜晚看av | 自拍偷拍第一页 | 国产福利在线免费观看 | 亚洲人成人一区二区在线观看 | 黄色一级毛片免费看 | 日韩在线视频观看 | 欧美国产日韩一区 | 三级成人在线观看 | 精品国产免费一区二区三区演员表 | 在线观看欧美日韩视频 | 午夜精品久久久久久久久久久久久 | 欧美成人一区二免费视频软件 | 美女精品一区 | 国产高清无av久久 | 欧美一级三级在线观看 | 婷婷色在线播放 | 国产精品精品视频 | 亚洲 欧美 另类 日韩 | 五月婷婷激情网 | 男人天堂99 | 国产在线观看一区二区 | 情侣黄网站免费看 | 91偷拍精品一区二区三区 | 日韩精品一区二区三区高清免费 | 精品国产一区二区三区性色 | 天堂成人国产精品一区 | 欧美二区在线 | 欧美日韩网站 | 91在线精品秘密一区二区 | 99re视频这里只有精品 | 色视频免费| 国产一区二区久久 | 久久久精品一区 | 精品亚洲视频在线 | 久久这里有精品 | 国产欧美一区二区三区另类精品 | 久久久久久国产精品 | 人人99 |