
Info o vlakne
Dependencies: BSP_DISCO_F746NG
main.cpp@0:761486fa05d8, 2020-11-13 (annotated)
- Committer:
- iliatumash
- Date:
- Fri Nov 13 17:36:27 2020 +0000
- Revision:
- 0:761486fa05d8
Uloha5;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |