Info o vlakne

Dependencies:   BSP_DISCO_F746NG

Committer:
iliatumash
Date:
Fri Nov 13 17:36:27 2020 +0000
Revision:
0:761486fa05d8
Uloha5;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iliatumash 0:761486fa05d8 1 #include "mbed.h"
iliatumash 0:761486fa05d8 2 #include "stm32746g_discovery_lcd.h"
iliatumash 0:761486fa05d8 3 #include <inttypes.h>
iliatumash 0:761486fa05d8 4
iliatumash 0:761486fa05d8 5 #if !defined(MBED_THREAD_STATS_ENABLED)
iliatumash 0:761486fa05d8 6 #error "Thread statistics not enabled"
iliatumash 0:761486fa05d8 7 #endif
iliatumash 0:761486fa05d8 8
iliatumash 0:761486fa05d8 9 #define MAX_THREAD_STATS 0x8
iliatumash 0:761486fa05d8 10
iliatumash 0:761486fa05d8 11 DigitalOut led(LED1);
iliatumash 0:761486fa05d8 12
iliatumash 0:761486fa05d8 13 void printText(uint16_t line, uint32_t Color, char text[])
iliatumash 0:761486fa05d8 14 {
iliatumash 0:761486fa05d8 15 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
iliatumash 0:761486fa05d8 16 BSP_LCD_SetTextColor(Color);
iliatumash 0:761486fa05d8 17 BSP_LCD_DisplayStringAt(0, LINE(line),(uint8_t *)text, CENTER_MODE);
iliatumash 0:761486fa05d8 18 ThisThread::sleep_for(500);
iliatumash 0:761486fa05d8 19 BSP_LCD_ClearStringLine(line);
iliatumash 0:761486fa05d8 20 ThisThread::sleep_for(500);
iliatumash 0:761486fa05d8 21 }
iliatumash 0:761486fa05d8 22
iliatumash 0:761486fa05d8 23 void led_thread()
iliatumash 0:761486fa05d8 24 {
iliatumash 0:761486fa05d8 25 while (true) {
iliatumash 0:761486fa05d8 26 led = !led;
iliatumash 0:761486fa05d8 27 ThisThread::sleep_for(100);
iliatumash 0:761486fa05d8 28 }
iliatumash 0:761486fa05d8 29 }
iliatumash 0:761486fa05d8 30
iliatumash 0:761486fa05d8 31 void lcd_tread1()
iliatumash 0:761486fa05d8 32 {
iliatumash 0:761486fa05d8 33 uint16_t line = 1;
iliatumash 0:761486fa05d8 34 uint32_t color = LCD_COLOR_WHITE;
iliatumash 0:761486fa05d8 35 char text[] = "Ahoj";
iliatumash 0:761486fa05d8 36 while (true) {
iliatumash 0:761486fa05d8 37 printText(line, color, text);
iliatumash 0:761486fa05d8 38 }
iliatumash 0:761486fa05d8 39 }
iliatumash 0:761486fa05d8 40
iliatumash 0:761486fa05d8 41 void lcd_tread2()
iliatumash 0:761486fa05d8 42 {
iliatumash 0:761486fa05d8 43 while (true) {
iliatumash 0:761486fa05d8 44 BSP_LCD_SetTextColor(LCD_COLOR_LIGHTRED);
iliatumash 0:761486fa05d8 45 BSP_LCD_FillCircle(100, 200, 36);
iliatumash 0:761486fa05d8 46 ThisThread::sleep_for(400);
iliatumash 0:761486fa05d8 47 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
iliatumash 0:761486fa05d8 48 BSP_LCD_FillCircle(100, 200, 36);
iliatumash 0:761486fa05d8 49 ThisThread::sleep_for(400);
iliatumash 0:761486fa05d8 50 }
iliatumash 0:761486fa05d8 51 }
iliatumash 0:761486fa05d8 52
iliatumash 0:761486fa05d8 53 void lcd_tread3()
iliatumash 0:761486fa05d8 54 {
iliatumash 0:761486fa05d8 55 while (true) {
iliatumash 0:761486fa05d8 56 BSP_LCD_SetTextColor(LCD_COLOR_LIGHTGREEN);
iliatumash 0:761486fa05d8 57 BSP_LCD_FillRect(250, 166, 70,70);
iliatumash 0:761486fa05d8 58 ThisThread::sleep_for(800);
iliatumash 0:761486fa05d8 59 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
iliatumash 0:761486fa05d8 60 BSP_LCD_FillRect(250, 166, 70,70);
iliatumash 0:761486fa05d8 61 ThisThread::sleep_for(800);
iliatumash 0:761486fa05d8 62 }
iliatumash 0:761486fa05d8 63 }
iliatumash 0:761486fa05d8 64
iliatumash 0:761486fa05d8 65 int main()
iliatumash 0:761486fa05d8 66 {
iliatumash 0:761486fa05d8 67 while (1){}
iliatumash 0:761486fa05d8 68 BSP_LCD_Init();
iliatumash 0:761486fa05d8 69 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
iliatumash 0:761486fa05d8 70 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
iliatumash 0:761486fa05d8 71 BSP_LCD_Clear(LCD_COLOR_BLUE);
iliatumash 0:761486fa05d8 72 BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
iliatumash 0:761486fa05d8 73
iliatumash 0:761486fa05d8 74
iliatumash 0:761486fa05d8 75 Thread *thread0 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread0");
iliatumash 0:761486fa05d8 76 Thread *thread1 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread1");
iliatumash 0:761486fa05d8 77 Thread *thread2 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread2");
iliatumash 0:761486fa05d8 78 Thread *thread3 = new Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "Thread3");
iliatumash 0:761486fa05d8 79
iliatumash 0:761486fa05d8 80 thread0->start(led_thread);
iliatumash 0:761486fa05d8 81 thread1->start(lcd_tread1);
iliatumash 0:761486fa05d8 82 thread2->start(lcd_tread2);
iliatumash 0:761486fa05d8 83 thread3->start(lcd_tread3);
iliatumash 0:761486fa05d8 84
iliatumash 0:761486fa05d8 85 thread_sleep_for(10000);
iliatumash 0:761486fa05d8 86 mbed_stats_thread_t *stats = new mbed_stats_thread_t[MAX_THREAD_STATS];
iliatumash 0:761486fa05d8 87 int count = mbed_stats_thread_get_each(stats, MAX_THREAD_STATS);
iliatumash 0:761486fa05d8 88 for (int i = 0; i < count; i++) {
iliatumash 0:761486fa05d8 89 printf("ID: 0x%" PRIx32 "\n", stats[i].id);
iliatumash 0:761486fa05d8 90 printf("Name: %s \n", stats[i].name);
iliatumash 0:761486fa05d8 91 printf("State: %" PRId32 "\n", stats[i].state);
iliatumash 0:761486fa05d8 92 printf("Priority: %" PRId32 "\n", stats[i].priority);
iliatumash 0:761486fa05d8 93 printf("Stack Size: %" PRId32 "\n", stats[i].stack_size);
iliatumash 0:761486fa05d8 94 printf("Stack Space: %" PRId32 "\n", stats[i].stack_space);
iliatumash 0:761486fa05d8 95 printf("\n");
iliatumash 0:761486fa05d8 96 while(1){}
iliatumash 0:761486fa05d8 97 )
iliatumash 0:761486fa05d8 98 }
iliatumash 0:761486fa05d8 99
iliatumash 0:761486fa05d8 100 thread0->terminate();
iliatumash 0:761486fa05d8 101 thread1->terminate();
iliatumash 0:761486fa05d8 102 thread2->terminate();
iliatumash 0:761486fa05d8 103 thread3->terminate();
iliatumash 0:761486fa05d8 104 return 0;
iliatumash 0:761486fa05d8 105
iliatumash 0:761486fa05d8 106
iliatumash 0:761486fa05d8 107 }