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