4-10-2015 BAE_RTOS_TEST

Dependencies:   mbed-rtos mbed

Committer:
gkumar
Date:
Sun Oct 04 03:54:09 2015 +0000
Revision:
0:f417d854dc29
4-10-2015 BAE_RTOS_TEST

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gkumar 0:f417d854dc29 1 #include "mbed.h"
gkumar 0:f417d854dc29 2 #include "rtos.h"
gkumar 0:f417d854dc29 3 Serial pc(USBTX, USBRX);
gkumar 0:f417d854dc29 4
gkumar 0:f417d854dc29 5 Thread *ptr_t_hk;
gkumar 0:f417d854dc29 6 Thread *ptr_t_acs;
gkumar 0:f417d854dc29 7 Thread *ptr_t_bea;
gkumar 0:f417d854dc29 8
gkumar 0:f417d854dc29 9 void T_HK(void const *args)
gkumar 0:f417d854dc29 10 {
gkumar 0:f417d854dc29 11 while(1){
gkumar 0:f417d854dc29 12 Thread::signal_wait(0x2);
gkumar 0:f417d854dc29 13 pc.printf("HK thread here\r \n");
gkumar 0:f417d854dc29 14 }
gkumar 0:f417d854dc29 15
gkumar 0:f417d854dc29 16 }
gkumar 0:f417d854dc29 17 void T_ACS(void const *args){
gkumar 0:f417d854dc29 18 while(1){
gkumar 0:f417d854dc29 19 Thread::signal_wait(0x1);
gkumar 0:f417d854dc29 20 pc.printf(" ACS thread here\r \n");
gkumar 0:f417d854dc29 21 }
gkumar 0:f417d854dc29 22 }
gkumar 0:f417d854dc29 23 void T_BEA(void const *args){
gkumar 0:f417d854dc29 24 while(1){
gkumar 0:f417d854dc29 25 Thread::signal_wait(0x3);
gkumar 0:f417d854dc29 26 pc.printf("BEA thread here\r \n");
gkumar 0:f417d854dc29 27 }
gkumar 0:f417d854dc29 28 }
gkumar 0:f417d854dc29 29
gkumar 0:f417d854dc29 30 uint8_t schedcount=1;
gkumar 0:f417d854dc29 31 void T_SC(void const *args)
gkumar 0:f417d854dc29 32 {
gkumar 0:f417d854dc29 33
gkumar 0:f417d854dc29 34
gkumar 0:f417d854dc29 35 if(schedcount == 4) //to reset the counter
gkumar 0:f417d854dc29 36 {
gkumar 0:f417d854dc29 37 schedcount = 1;
gkumar 0:f417d854dc29 38 }
gkumar 0:f417d854dc29 39 pc.printf("\n\rThe value of i in scheduler is %d\n\r",schedcount);
gkumar 0:f417d854dc29 40 if(schedcount%1==0)
gkumar 0:f417d854dc29 41 {
gkumar 0:f417d854dc29 42 ptr_t_acs -> signal_set(0x1);
gkumar 0:f417d854dc29 43 }
gkumar 0:f417d854dc29 44
gkumar 0:f417d854dc29 45 if(schedcount%2==0)
gkumar 0:f417d854dc29 46 {
gkumar 0:f417d854dc29 47 ptr_t_hk -> signal_set(0x2);
gkumar 0:f417d854dc29 48
gkumar 0:f417d854dc29 49 }
gkumar 0:f417d854dc29 50 if(schedcount%3==0)
gkumar 0:f417d854dc29 51 {
gkumar 0:f417d854dc29 52
gkumar 0:f417d854dc29 53 ptr_t_bea -> signal_set(0x3);
gkumar 0:f417d854dc29 54
gkumar 0:f417d854dc29 55 }
gkumar 0:f417d854dc29 56 schedcount++;
gkumar 0:f417d854dc29 57 }
gkumar 0:f417d854dc29 58
gkumar 0:f417d854dc29 59
gkumar 0:f417d854dc29 60
gkumar 0:f417d854dc29 61
gkumar 0:f417d854dc29 62 int main(){
gkumar 0:f417d854dc29 63 ptr_t_hk = new Thread(T_HK);
gkumar 0:f417d854dc29 64 ptr_t_acs = new Thread(T_ACS);
gkumar 0:f417d854dc29 65 ptr_t_bea = new Thread(T_BEA);
gkumar 0:f417d854dc29 66
gkumar 0:f417d854dc29 67 ptr_t_acs->set_priority(osPriorityAboveNormal);
gkumar 0:f417d854dc29 68 ptr_t_hk->set_priority(osPriorityAboveNormal);
gkumar 0:f417d854dc29 69 ptr_t_bea->set_priority(osPriorityAboveNormal);
gkumar 0:f417d854dc29 70 RtosTimer t_sc_timer(T_SC,osTimerPeriodic); // Initiating the scheduler thread
gkumar 0:f417d854dc29 71 t_sc_timer.start(10000);
gkumar 0:f417d854dc29 72
gkumar 0:f417d854dc29 73 while(1) //required to prevent main from terminating
gkumar 0:f417d854dc29 74 {
gkumar 0:f417d854dc29 75 ;
gkumar 0:f417d854dc29 76 }
gkumar 0:f417d854dc29 77 }