board.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2009-09-22 Bernard add board.h to this bsp
  9. * 2018-09-02 xuzhuoyi modify for TMS320F28379D version
  10. */
  11. #include <rtthread.h>
  12. #include "board.h"
  13. #include "F28x_Project.h"
  14. extern interrupt void RTOSINT_Handler();
  15. /**
  16. * This is the timer interrupt service routine.
  17. *
  18. */
  19. interrupt void cpu_timer2_isr (void)
  20. {
  21. CpuTimer2Regs.TCR.all = 0x8000;
  22. /* enter interrupt */
  23. rt_interrupt_enter();
  24. rt_tick_increase();
  25. /* leave interrupt */
  26. rt_interrupt_leave();
  27. }
  28. /**
  29. * This function will initial STM32 board.
  30. */
  31. void rt_hw_board_init()
  32. {
  33. /* Configure the system clock @ 84 Mhz */
  34. InitSysCtrl();
  35. DINT;
  36. InitPieCtrl();
  37. IER = 0x0000;
  38. IFR = 0x0000;
  39. InitPieVectTable();
  40. EALLOW; // This is needed to write to EALLOW protected registers
  41. PieVectTable.TIMER2_INT = &cpu_timer2_isr;
  42. PieVectTable.RTOS_INT = &RTOSINT_Handler;
  43. EDIS;
  44. InitCpuTimers();
  45. ConfigCpuTimer(&CpuTimer2, 200, 1000000 / RT_TICK_PER_SECOND);
  46. CpuTimer2Regs.TCR.all = 0x4000;
  47. IER |= M_INT14;
  48. #ifdef RT_USING_HEAP
  49. rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
  50. #endif
  51. #ifdef RT_USING_COMPONENTS_INIT
  52. rt_components_board_init();
  53. #endif
  54. #ifdef RT_USING_CONSOLE
  55. rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
  56. #endif
  57. }