application.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. * 2010-03-30 Kyle First version
  9. */
  10. #include <rtthread.h>
  11. #include "compiler.h"
  12. #include "gpio.h"
  13. char thread_led1_stack[1024];
  14. struct rt_thread thread_led1;
  15. static void rt_thread_entry_led1(void* parameter)
  16. {
  17. while (1)
  18. {
  19. /* led on */
  20. rt_kprintf("LED1 on\r\n");
  21. gpio_tgl_gpio_pin(AVR32_PIN_PA08);
  22. rt_thread_delay(RT_TICK_PER_SECOND / 2); /* sleep 0.5 second and switch to other thread */
  23. /* led off */
  24. rt_kprintf("LED1 off\r\n");
  25. gpio_tgl_gpio_pin(AVR32_PIN_PA08);
  26. rt_thread_delay(RT_TICK_PER_SECOND / 2);
  27. }
  28. }
  29. char thread_led2_stack[1024];
  30. struct rt_thread thread_led2;
  31. void rt_thread_entry_led2(void* parameter)
  32. {
  33. while (1)
  34. {
  35. /* led on */
  36. rt_kprintf("LED2 on");
  37. gpio_tgl_gpio_pin(AVR32_PIN_PA07);
  38. rt_thread_delay(RT_TICK_PER_SECOND);
  39. /* led off */
  40. rt_kprintf("LED2 off\r\n");
  41. gpio_tgl_gpio_pin(AVR32_PIN_PA07);
  42. rt_thread_delay(RT_TICK_PER_SECOND);
  43. }
  44. }
  45. int rt_application_init()
  46. {
  47. /* create led1 thread */
  48. rt_thread_init(&thread_led1,
  49. "led1",
  50. rt_thread_entry_led1,
  51. RT_NULL,
  52. &thread_led1_stack[0],
  53. sizeof(thread_led1_stack), 5, 5);
  54. rt_thread_startup(&thread_led1);
  55. //------- init led2 thread
  56. rt_thread_init(&thread_led2,
  57. "led2",
  58. rt_thread_entry_led2,
  59. RT_NULL,
  60. &thread_led2_stack[0],
  61. sizeof(thread_led2_stack),5,10);
  62. rt_thread_startup(&thread_led2);
  63. return 0;
  64. }