Professional Documents
Culture Documents
1.Bộ định thời mềm: 1.1.1 Giới thiệu
1.Bộ định thời mềm: 1.1.1 Giới thiệu
lại một lần. Loại bộ đếm thời gian đơn này có thể được khởi động lại bằng tay và không
- Auto-Reload Timer(Callback-Timer): Đây là loại bộ đếm tự động, sau khi bắt đầu và kết
thúc khoảng thời gian cho trước, nó sẽ tự khởi động lại theo thời gian định kỳ mà nó đã
thực hiện.
2.Daemon Task
1.1.4 Giới thiệu
- Daemon Task là một tác vụ FreeRTOS tiêu chuẩn được tạo tự động khi bộ lập lịch bắt đầu. Mức
độ ưu tiên và kích thước ngăn xếp được đặt tại thời gian biên dịch bởi các hằng số cấu hình có
sẵn trong "FreeRTOSConfig.h".
1.8 Xóa bộ hẹn giờ khi các công việc của bộ hẹn giờ không còn cần thiết trong hệ
thống:
- API: xTimerDelete().
1.9 Trả về thời gian mà bộ hẹn giờ khi kết thúc, callback function sẽ thực thi:
- API: xTimerGetExpiryTime().
1.10 Trả về tên văn bản có thể đọc được do người lập trình gán khi bộ định thời được
tạo.:
- API: pcTimerGetName().
1.11 Truy vấn bộ hẹn giờ để xác định xem bộ định thời có đang chạy hay không
- API: xTimerIsTimerActive().
- Đồng hồ bấm giờ sẽ không chạy nếu:
o 1. Bộ đếm thời gian đã được tạo, nhưng không bắt đầu.
o 2. Bộ hẹn chỉ hẹn một lần và chưa được khởi động một lần nào nữa.
1.12 Trì hoãn việc thực thi một chức năng đối với tác vụ daemon RTOS:
- API: xTimerPendFunctionCall().
4.TH8.2
#include <Arduino_FreeRTOS.h>
#include <timers.h>
#include <task.h>
/ * Ấn định cho bộ hẹn giờ một lần và tự động nạp lại lần lượt là 6 giây . * /
// tạo các trình xử lý tham chiếu cho bộ hẹn giờ một lần và tự động tải lại
void setup()
Serial.begin(9600);
xOneShotTimer = xTimerCreate(
"OneShot",
mainONE_SHOT_TIMER_PERIOD,
pdFALSE,
0,
prvOneShotTimerCallback );
xAutoReloadTimer = xTimerCreate(
"AutoReload",
mainAUTO_RELOAD_TIMER_PERIOD,
pdTRUE,
0,
prvAutoReloadTimerCallback );
vTaskStartScheduler();
void loop()
TickType_t xTimeNow;
xTimeNow = xTaskGetTickCount();
Serial.println(xTimeNow/31);
TickType_t xTimeNow;
xTimeNow = xTaskGetTickCount();
Serial.println( xTimeNow/31 );
5.TH8.3
#include <Arduino_FreeRTOS.h>
#include <timers.h>
TimerHandle_t xAutoReloadTimer;
BaseType_t xTimer2Started;
void setup()
xAutoReloadTimer = xTimerCreate(
"AutoReload",
mainAUTO_RELOAD_TIMER_PERIOD,
pdTRUE,
0,
prvTimerCallback);
vTaskStartScheduler();
}
void loop()
TickType_t xTimeNow;
uint32_t ulExecutionCount;
ulExecutionCount++;
xTimeNow = xTaskGetTickCount();
Serial.println( xTimeNow/31 );
xTimerChangePeriod( xAutoReloadTimer,
mainAUTO_RELOAD_TIMER_PERIOD2,
0 );