|
我用STM32H747的双核HSEM,CM4内核给CM7内核发送HSEM中断,目前的现象是这样的 1 .CM4跑裸机,CM7跑裸机,CM7能正常响应中断并处理 2.CM4跑裸机,Cm7跑FreeRtos,CM7在中断中使用SemaphoreGiveFromISR或任务二值信号量这种信号量时,程序就会卡死在在configASSERT( pxQueue );中,去掉SemaphoreGiveFromISR就正常。 3。怀疑是FreeRtos问题,有做了实验,使用了按键中断,中断优先级和HSEM一样,都是6,在中断可以里使用SemaphoreGiveFromISR或任务二值信号量,不会卡死。 FREERTOS中的优先级数值设定的参数configMAX_SYSCALL_INTERUPT_PRORITY是默认值5 我又看了下,信号量的值是0,因此死在了断言函数中,但不明白为什么信号量时0 请问这是什么问题? |
STM32H747XIH6 CM7正常运行 CM4不能正运行
【经验分享】STM32H7 DMA+UART不定长接收实战:解决缓存溢出与数据错位问题
STM32H725的LSE不起振
STM32H747XI CM7正常运行 CM4不运行
stm32h7s78-dk烧录
STM32Programmer能识别芯片,Keil无法识别
STM32H7进入BOOTLoader模式
stm32H743使用CubeMxAi导入模型文件,需要将测试数据进行识别,不知道如何传入参数
STM32H725VGT3内存不足问题
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
微信公众号
手机版
问题解决了,不是FreeRtos的问题,也不是中断优先级的问题。HSEM的中断我是参考例程做的。
一开始就会用HAL_HSEM_FastTake(HSEM_ID_0); HAL_HSEM_Release(HSEM_ID_0,0);这两条语句来唤醒CPU2,这个时候如果你开了HSEM1中断,就会进入中断。如果你这时候的FreeRtos的信号量和任务还没有创建,此时进入中断后就会出错。调整下顺序,将HAL_HSEM_FastTake(HSEM_ID_0); HAL_HSEM_Release(HSEM_ID_0,0);这2条语句放在创建信号量后和任务调度前面则正常