-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
58 lines (45 loc) · 1.16 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* main.cpp
*
* Created on: Nov 22, 2021
* Author: Benjamin Wheeler
*/
#include <albertOS.h>
void taskA() {
while(true) {
GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN0);
albertOS::sleep(500);
}
}
void taskB() {
while(true) {
GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN1);
albertOS::sleep(1000);
}
}
void idleTask() {
// empty task to ensure RTOS always has something to do.
while(true);
}
void per_event() {
GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
}
/**
* A simple example of albertOS.
*/
void main() {
albertOS::init();
// Setup GPIO
GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2);
GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2);
// Add threads
albertOS::addThread(taskA, 1, (char*)"Task A");
albertOS::addThread(taskB, 3, (char*)"Task B");
albertOS::addThread(idleTask, 4, (char*)"Idle Thread");
// Add events
albertOS::addPeriodicEvent(per_event, 100);
// Start the kernel
albertOS::launch();
while(true); // If we end up here, something went wrong with the launch().
}