
我用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 请问这是什么问题? |
stm32Cube Visual studio code 如何设置STM32H7的下载算法
请教下关于 stm32h7x5,7x7 系列双核 dsi ltdc 显示驱动的时钟频率配置 ?
请教SPI用LL读取的问题
STM32H743 LAN8720 CUBEMX配置lwIP无法ping通,分配pbuf失败
STM32H750VBT6 + W5500 + 激光雷达点云
STM32H750XBH6的外置SDRAM相关问题
FW_H7 V1.12.1-HAL库DMA双缓冲配置
STM32H743vit6无法连接
X-CUBE-AZRTOS-H7
STM32H755双核编程如何入门
问题解决了,不是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条语句放在创建信号量后和任务调度前面则正常