久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
MSP430G2553時間片輪詢代碼結構
[打印本頁]
作者:
龍某人
時間:
2023-4-5 11:08
標題:
MSP430G2553時間片輪詢代碼結構
#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(); //時間片任務標志處理函數
}
/*
* TimeSlice.h
*
* Created on: 2023年3月31日
* Author: Long
* 如何使用:
* 1、將對應的.c和.h兩個文件導入到代碼工程里面
* 2、在main函數的while(1)里面調用TaskProcess(),調用時記得添加 -- #include "TimeSlice.h"
* 3、在系統時鐘或者定時器里面調用TaskRemarks(),調用時記得添加 -- #include "TimeSlice.h"
* 4、在TimeSlice.c里面的task1()、task2()、task3()填寫任務代碼,可以根據實際需要自己添加新的任務函數
*/
#ifndef TIMESLICE_TIMESLICE_H_
#define TIMESLICE_TIMESLICE_H_
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <msp430g2553.h>
/* USER CODE END Includes */
typedef unsigned char uint8;
void Task1();// 任務1
void Task2();// 任務2
void Task3();// 任務3
void TaskRemarks(void);//任務標志處理
void TaskProcess(void);//任務處理
#define TASKS_MAX 3
//----任務結構----
typedef struct _TASK_COMPONENTS
{
uint8 Run; // 程序運行標記:0-不運行,1運行
uint8 Timer; // 計時器
uint8 ItvTime; // 任務運行間隔時間
void (*TaskHook)(void); // 要運行的任務函數
} TASK_COMPONENTS; // 任務定義
////----任務清單----
//typedef enum _TASK_LIST
//{
// TASK1, //任務1
// TASK2, //任務2
// TASK3, //任務3
// // 這里添加你的任務。。。。
// TASKS_MAX // 總的可供分配的定時任務數目
//} TASK_LIST;
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
#endif /* TIMESLICE_TIMESLICE_H_ */
復制代碼
#include <TimeSlice.h>
/**************************************************************************************
* Variable definition
* 在定義變量時,我們已經初始化了值,這些值的初始化,非常重要,跟具體的執行時間優先級等都有關系,這個需要自己掌握。
* 時間片的大小需要自己注意
**************************************************************************************/
TASK_COMPONENTS TaskComps[TASKS_MAX] =
{
{0, 60, 100, Task1}, // 任務1
{0, 20, 100, Task2}, // 任務2
{0, 30, 100, Task3}, // 任務3
// 這里添加你的任務。。。。
};
///**************************************************************************************
//* FunctionName : TimerInterrupt()
//* Description : 定時中斷服務函數
//* EntryParameter : None
//* ReturnValue : None
//* 將定時中斷服務函數放在定時器中斷里面
//**************************************************************************************/
//void TimerInterrupt(void)
//{
// TaskRemarks( );
//}
/**************************************************************************************
* FunctionName : TaskRemarks()
* Description : 任務標志處理
* EntryParameter : None
* ReturnValue : None
* 任務運行標志出來,此函數就相當于中斷服務函數,需要在定時器的中斷服務函數中調用此函數,這里獨立出來,并于移植和理解。
**************************************************************************************/
void TaskRemarks(void)
{
uint8 i;
for (i=0; i<TASKS_MAX; i++) // 逐個任務時間處理
{
if (TaskComps[i].Timer) // 時間不為0
{
TaskComps[i].Timer--; // 減去一個節拍
if (TaskComps[i].Timer == 0) // 時間減完了
{
TaskComps[i].Timer = TaskComps[i].ItvTime; // 恢復計時器值,從新下一次
TaskComps[i].Run = 1; // 任務可以運行
}
}
}
}
/**************************************************************************************
* FunctionName : TaskProcess()
* Description : 任務處理
* EntryParameter : None
* ReturnValue : None
* 此函數就是判斷什么時候該執行那一個任務了,實現任務的管理操作,
* 應用者只需要在main()函數中調用此函數就可以了,并不需要去分別調用和處理任務函數。
**************************************************************************************/
void TaskProcess(void)
{
uint8 i;
for (i=0; i<TASKS_MAX; i++) // 逐個任務時間處理
{
if (TaskComps[i].Run) // 時間不為0
{
TaskComps[i].TaskHook(); // 運行任務
TaskComps[i].Run = 0; // 標志清0
}
}
}
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
void Task1()// 任務1
{
led1_toggle();
}
void Task2()// 任務2
{
led2_toggle();
}
void Task3()// 任務3
{
}
復制代碼
代碼:
G2_Basic.zip
(96.57 KB, 下載次數: 8)
2023-4-5 11:06 上傳
點擊文件名下載附件
MSP430G2553時間片輪詢代碼
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
免费看黄色小视频
|
日韩二三区
|
日日操日日操
|
亚洲三级在线
|
亚洲午夜视频在线观看
|
成人欧美视频
|
亚洲综合婷婷
|
丁香六月婷婷
|
黄色天天影视
|
成人黄色免费视频
|
免费一级毛片免费播放
|
亚洲综合久久久
|
中文在线免费观看
|
日韩在线成人
|
成人av播放
|
亚洲私人影院
|
天天干视频
|
亚洲精品国产精品乱码不卡
|
日韩精品免费一区二区夜夜嗨
|
官场少妇尤物雪白高耸
|
亚洲免费高清
|
色综合婷婷
|
国产精品成人一区
|
午夜久久久久久
|
中文字幕在线免费看
|
五月婷婷丁香
|
国产a久久麻豆入口
|
可以看毛片的网站
|
可以免费看av的网站
|
午夜免费小视频
|
青青草免费在线视频
|
国产精品成人一区
|
亚洲视频在线观看
|
国产又粗又猛视频免费
|
国产免费av网站
|
毛片毛片毛片毛片毛片
|
成人动态视频
|
福利视频网址导航
|
精品视频99
|
日韩激情久久
|
www.爱爱
|