X_NUCLEO_IHM03A1 в Mbed Studio? - PullRequest
       30

X_NUCLEO_IHM03A1 в Mbed Studio?

0 голосов
/ 08 апреля 2020

Я хочу использовать Mbed Studio для написания программы для X_NUCLEO_IHM03A1 с NUCLEO-L476RG с использованием официальной библиотеки и примера для 1 двигателя. Библиотека, как я понял, поддерживает только mbed os 2. В то же время Mbed Studio может работать только с mbed os 5.

После компиляции проекта мое устройство перезагружается со следующим сообщением:

++ MbedOS Error Info ++
Error Status: 0x80010133 Code: 307 Module: 1                                                                                                                                  Error Message: Mutex: 0x20000578, Not allowed in ISR context
Location: 0x800E6DD
Error Value: 0x20000578
Current Thread: main Id: 0x20002018 Entry: 0x800B90D StackSize: 0x1000 StackMem: 0x200008E0 SP: 0x20001600
For more info, visit: https://mbed.com/s/error?error=0x80010133&tgt=NUCLEO_L476RG                                                                                                                          -- MbedOS Error Info --                                                                                                                                                = System will be rebooted due to a fatal error =
= Reboot count(=1) reached maximum, system will halt after rebooting

Итак , Я подумал, может быть, это решения:

1) как-то переписать библиотеку, чтобы она работала с MBED OS 5 (я не уверен, что именно нужно изменить)

2) используйте mbed ОС 2 в Mbed Studio (не уверен, если это возможно)

X_NUCLEO_IHM03A1 библиотека - https://os.mbed.com/teams/ST/code/X_NUCLEO_IHM03A1/

Как решить проблема, скомпилированная в проекте Mbed Studio для X_NUCLEO_IHM03A1, может работать?

1 Ответ

0 голосов
/ 17 апреля 2020

Я получил тот же код ошибки, что и у вас, но с платой расширения IHM01A1 и платой Nucleo F411RE. Я не знаю, сработает ли это для вашей доски, но я думаю, что стоит попробовать. Имена разные, но, кроме того, код выглядит аналогично.

Использование чистого металлического профиля работает без каких-либо изменений, но это изменение работает и с OS5.

В файле Components / L6474 / L6474 .h закомментируйте следующую строку:

void L6474_DisableIrq(void)
{
    // __disable_irq();
}

Эта функция вызывается в основном файле при чтении или записи с использованием SPI.

Я не знаю, почему это работает, поскольку API Mbed просит отключить прерывания перед использованием функции записи SPI, но каким-то образом удаление этой строки, которая отключает прерывание, заставляет его работать.

...