1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2011-05-23     aozima       first implementation for PIC32.
9  */
10 
11 // Adds support for PIC32 Peripheral library functions and macros
12 #include <plib.h>
13 #include <rtthread.h>
14 
15 rt_align(RT_ALIGN_SIZE)
16 int thread_led1_stack[512];
17 struct rt_thread thread_led1;
thread_led1_entry(void * parameter)18 void thread_led1_entry(void* parameter)
19 {
20     // configure PORTD.RD1 = output
21     mPORTDSetPinsDigitalOut(BIT_1);
22     while(1)
23     {
24         // .. Toggle the LED
25         mPORTDToggleBits(BIT_1);
26         rt_thread_delay( RT_TICK_PER_SECOND ); /* delay 1s */
27     }
28 }
29 
thread_led2_entry(void * parameter)30 static void thread_led2_entry(void* parameter)
31 {
32     // configure PORTD.RD2 = output
33     mPORTDSetPinsDigitalOut(BIT_2);
34 
35     while (1)
36     {
37         // .. Toggle the LED
38         mPORTDToggleBits(BIT_2);
39         rt_thread_delay( RT_TICK_PER_SECOND/2 ); /* delay 0.5s */
40     }
41 }
42 
rt_application_init(void)43 int rt_application_init(void)
44 {
45     rt_thread_t thread;
46 
47     rt_thread_init(&thread_led1,
48                    "led1",
49                    thread_led1_entry, RT_NULL,
50                    &thread_led1_stack[0], sizeof(thread_led1_stack),
51                    20, 10);
52     rt_thread_startup(&thread_led1);
53 
54     /* create led2 thread */
55     thread = rt_thread_create("led2",
56                               thread_led2_entry, RT_NULL,
57                               1024,
58                               20, 5);
59     if (thread != RT_NULL)
60         rt_thread_startup(thread);
61 
62     return 0;
63 }
64