Info o vlakne

Dependencies:   BSP_DISCO_F746NG

main.cpp

Committer:
iliatumash
Date:
2020-11-13
Revision:
0:761486fa05d8

File content as of revision 0:761486fa05d8:

#include "mbed.h" 
#include "stm32746g_discovery_lcd.h" 
#include <inttypes.h> 

#if !defined(MBED_THREAD_STATS_ENABLED) 
#error "Thread statistics not enabled" 
#endif 

#define MAX_THREAD_STATS 0x8 

DigitalOut led(LED1); 

void printText(uint16_t line, uint32_t Color, char text[]) 
{ 
BSP_LCD_SetBackColor(LCD_COLOR_BLUE); 
BSP_LCD_SetTextColor(Color); 
BSP_LCD_DisplayStringAt(0, LINE(line),(uint8_t *)text, CENTER_MODE); 
ThisThread::sleep_for(500); 
BSP_LCD_ClearStringLine(line); 
ThisThread::sleep_for(500); 
} 

void led_thread() 
{ 
while (true) { 
led = !led; 
ThisThread::sleep_for(100); 
} 
} 

void lcd_tread1() 
{ 
uint16_t line = 1; 
uint32_t color = LCD_COLOR_WHITE; 
char text[] = "Ahoj"; 
while (true) { 
printText(line, color, text); 
} 
} 

void lcd_tread2() 
{ 
while (true) { 
BSP_LCD_SetTextColor(LCD_COLOR_LIGHTRED); 
BSP_LCD_FillCircle(100, 200, 36); 
ThisThread::sleep_for(400); 
BSP_LCD_SetTextColor(LCD_COLOR_BLUE); 
BSP_LCD_FillCircle(100, 200, 36); 
ThisThread::sleep_for(400); 
} 
} 

void lcd_tread3() 
{ 
while (true) { 
BSP_LCD_SetTextColor(LCD_COLOR_LIGHTGREEN); 
BSP_LCD_FillRect(250, 166, 70,70); 
ThisThread::sleep_for(800); 
BSP_LCD_SetTextColor(LCD_COLOR_BLUE); 
BSP_LCD_FillRect(250, 166, 70,70); 
ThisThread::sleep_for(800); 
} 
} 

int main() 
{ 
while (1){}
BSP_LCD_Init(); 
BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); 
BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); 
BSP_LCD_Clear(LCD_COLOR_BLUE); 
BSP_LCD_SetFont(&LCD_DEFAULT_FONT); 


Thread *thread0 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread0"); 
Thread *thread1 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread1"); 
Thread *thread2 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread2"); 
Thread *thread3 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread3"); 

thread0->start(led_thread); 
thread1->start(lcd_tread1); 
thread2->start(lcd_tread2); 
thread3->start(lcd_tread3); 

thread_sleep_for(10000); 
mbed_stats_thread_t *stats = new mbed_stats_thread_t[MAX_THREAD_STATS]; 
int count = mbed_stats_thread_get_each(stats, MAX_THREAD_STATS);    
for (int i = 0; i < count; i++) { 
printf("ID: 0x%" PRIx32 "\n", stats[i].id); 
printf("Name: %s \n", stats[i].name); 
printf("State: %" PRId32 "\n", stats[i].state); 
printf("Priority: %" PRId32 "\n", stats[i].priority); 
printf("Stack Size: %" PRId32 "\n", stats[i].stack_size); 
printf("Stack Space: %" PRId32 "\n", stats[i].stack_space); 
printf("\n"); 
while(1){}
)
} 

thread0->terminate(); 
thread1->terminate(); 
thread2->terminate(); 
thread3->terminate(); 
return 0; 


}