我用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 请问这是什么问题? |
H743内置双bank flash 并行处理异常问题
请问有其他芯片有STM32H754I-DISCO的AI视觉包或类似功能吗?
STM320H750 USB 通讯必须插拔一次才正常
求技术解答,STM32H723的USB模拟U盘应用过程遇到了问题。
stm32cubeide如何修改芯片型号和启动文件
使用DFSDM对电信号的采集
STM32H750VB是不是无法支持SDRAM
升级到cubemx6.11.0后,之前配置好的h743vi的adc3没有了vbat、vint、vtempr
STM32H743iit6 正点驱动LTDC和TFTLDC内存冲突
STM32H7的HRTIM可以生成PWM
问题解决了,不是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条语句放在创建信号量后和任务调度前面则正常