api-hal-spi.c 721 B

1234567891011121314151617181920212223242526272829303132
  1. #include "api-hal-spi.h"
  2. osMutexId_t spi_mutex_r;
  3. osMutexId_t spi_mutex_d;
  4. extern SPI_HandleTypeDef SPI_R;
  5. extern SPI_HandleTypeDef SPI_D;
  6. void api_hal_spi_init() {
  7. spi_mutex_r = osMutexNew(NULL);
  8. spi_mutex_d = osMutexNew(NULL);
  9. }
  10. void api_hal_spi_lock(SPI_HandleTypeDef* spi) {
  11. if(spi == &SPI_D) {
  12. osMutexAcquire(spi_mutex_d, osWaitForever);
  13. } else if(spi == &SPI_R) {
  14. osMutexAcquire(spi_mutex_r, osWaitForever);
  15. } else {
  16. Error_Handler();
  17. }
  18. }
  19. void api_hal_spi_unlock(SPI_HandleTypeDef* spi) {
  20. if(spi == &SPI_D) {
  21. osMutexRelease(spi_mutex_d);
  22. } else if(spi == &SPI_R) {
  23. osMutexRelease(spi_mutex_r);
  24. } else {
  25. Error_Handler();
  26. }
  27. }