Gast
#6839026
Hallo, ich werdende einen STM32 mit der STM32CubeIDE und das darin konfigurierbare FreeRTOS. Um Daten aufzunehmen verwende ich einen I2CRead mit DMA-transfer und einen Interrupt um eine Mittelwertbildung zu machen. HAL_TIM_PeriodElapsedCallback -> HAL_I2C_Mem_Read_DMA HAL_I2C_MemRxCpltCallback -> "Avg-Function"/Lowpassfilter "AvgCnt ==16" -> "Schedule a Task" Nach 16 Mittelwerten möchte ich einen Task aktivieren(resume a suspended task)um Berechnungen zu machen. Das kann man bei FreeRTOS eigentlich mit xTaskResumeFromISR gemacht werden, aber das wird in der CMSIS Abstraktion osThreadResume nicht verwendet , man bekommt einen Fehler. 1. osStatus_t osThreadResume (osThreadId_t thread_id) { 2. TaskHandle_t hTask = (TaskHandle_t)thread_id; 3. osStatus_t stat; 4. 5. if (IS_IRQ()) { 6. stat = osErrorISR; 7. } 8. else if (hTask == NULL) { 9. stat = osErrorParameter; 10. } 11. else { 12. stat = osOK; 13. vTaskResume (hTask); 14. } 15. 16. return (stat); 17. } 18. #endif /* (configUSE_OS2_THREAD_SUSPEND_RESUME == 1) */ Warum ist das nicht in der CMSIS Implementierung so gelöst, bzw. was wäre die Empfehlung, es gibt sicher gute Gründe warum xTaskResumeFromISR in osThreadResume nicht verwendet wird ? Oder habe ich eine Funktion in CMSIS übersehen? Vielen Dank. Grüße, Seppel