我想使用Mbed Studio使用官方库和1台电机示例为X_NUCLEO_IHM03A1板编写NUCLEO-L476RG程序。据我了解,库仅支持mbed os2。同时,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 Studio中使用mbed os 2(不确定是否可行)
X_NUCLEO_IHM03A1库-https://os.mbed.com/teams/ST/code/X_NUCLEO_IHM03A1/
如何解决在Mbed Studio项目中为X_NUCLEO_IHM03A1编译的问题可以起作用?
我得到了与您相同的错误代码,但使用扩展板IHM01A1和Nucleo板F411RE。我不知道这是否适合您的董事会,但我认为值得尝试。名称不同,但代码看起来相似。
使用裸机配置文件无需任何修改即可使用,但此更改也适用于OS5。
在文件Components / L6474 / L6474.h中注释掉以下行:
void L6474_DisableIrq(void)
{
// __disable_irq();
}
使用SPI进行读写时,会在主文件中调用此函数。
我不知道它为什么起作用,因为Mbed API要求您在使用SPI写功能之前先禁用中断,但是以某种方式删除禁用中断的这一行就可以使其工作。