furi.c 767 B

123456789101112131415161718192021222324252627
  1. #include "furi.h"
  2. #include <string.h>
  3. #include "queue.h"
  4. void furi_init() {
  5. furi_assert(!furi_is_irq_context());
  6. furi_assert(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED);
  7. furi_log_init();
  8. furi_record_init();
  9. furi_stdglue_init();
  10. }
  11. void furi_run() {
  12. furi_assert(!furi_is_irq_context());
  13. furi_assert(xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED);
  14. #if(__ARM_ARCH_7A__ == 0U)
  15. /* Service Call interrupt might be configured before kernel start */
  16. /* and when its priority is lower or equal to BASEPRI, svc intruction */
  17. /* causes a Hard Fault. */
  18. NVIC_SetPriority(SVCall_IRQn, 0U);
  19. #endif
  20. /* Start the kernel scheduler */
  21. vTaskStartScheduler();
  22. }