stm32h745双核通信的一个实验
A,打开上次的双核点灯的例子,进入配置页面
B,点击System Core进去,配置NVIC1为关闭(不用配),配置NVIC2如下:
C,m4核的main.c中加入:
main函数前加入
int notifReceived;
void HAL_HSEM_FreeCallback(uint32_t SemMask){
notifReceived=1;
HAL_HSEM_ActivateNotification(__HAL_HSEM_SEMID_TO_MASK(HSEM_ID_0));
}
main函数中:
MX_GPIO_Init();//这里是自动加入的
/* USER CODE BEGIN 2 */
HAL_HSEM_ActivateNotification(__HAL_HSEM_SEMID_TO_MASK(HSEM_ID_0));
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(notifReceived == 1)
{
notifReceived=0;
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
m7核的main.c改动如下:
while (1)
{
HAL_HSEM_FastTake(HSEM_ID_0);
for(int i=0;i<10;i++){
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
HAL_Delay(200);
}
HAL_HSEM_Release(HSEM_ID_0,0);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
HSEM这个是基于什么通信?类似串口吗?
引用: wangerxian 发表于 2023-11-29 17:04 HSEM这个是基于什么通信?类似串口吗?
是stm32h7 双核芯片里面搞的一个硬件信号量 专门给两个核之间通信用的。
引用: damiaa 发表于 2023-11-30 09:20 是stm32h7 双核芯片里面搞的一个硬件信号量 专门给两个核之间通信用的。
感觉有点意思,不过这个通信程序ST应该已经封装好了吧。
引用: wangerxian 发表于 2023-11-30 10:38 感觉有点意思,不过这个通信程序ST应该已经封装好了吧。
是啊。会用就行。