X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
stm32/stm8
[原创] lpc54114双核通信--互斥
star_66666
2018-4-19 16:35
楼主
本帖主要实现非中断情况下的互斥通信。
在前一帖子代码的基础上稍加更改,在M4核和M0+核的代码基础上增加如下代码即可,
在M4核中更改的代码有
/* Init Mailbox */
MAILBOX_Init(MAILBOX);
/* Boot source for Core 1 from flash */
SYSCON->CPBOOT = SYSCON_CPBOOT_BOOTADDR(*(uint32_t *)((uint8_t *)CORE1_BOOT_ADDRESS + 0x4));
SYSCON->CPSTACK = SYSCON_CPSTACK_STACKADDR(*(uint32_t *)CORE1_BOOT_ADDRESS);
int32_t temp = SYSCON->CPCTRL;
temp |= 0xc0c48000;
SYSCON->CPCTRL = (temp | SYSCON_CPCTRL_CM0RSTEN_MASK);
SYSCON->CPCTRL = (temp);
delay();
MAILBOX_SetValue(MAILBOX, kMAILBOX_CM0Plus, (uint32_t)&g_msg);
while (1)
{
/* Stop secondary core execu
ti
on. */
if (!GPIO_ReadPinInput(BOARD_SW1_GPIO, BOARD_SW1_GPIO_PORT, BOARD_SW1_GPIO_PIN))
{
MCMGR_StopCore(kMCMGR_Core1);
PRINTF("Stopped Secondary core.\n");
delay();
}
/* Start core from reset vector */
if (!GPIO_ReadPinInput(BOARD_SW2_GPIO, BOARD_SW2_GPIO_PORT, BOARD_SW2_GPIO_PIN))
{
PRINTF("Started Secondary core.\n");
MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, 5, kMCMGR_Start_Synchronous);
delay();
}
PRINTF("M4 receive:%d\r\n",M0_TO_M4_R);
delay();
M4_TO_M0_T++;
/* Get Mailbox mutex */
while (MAILBOX_GetMutex(MAILBOX) == 0)
;
/* The core0 has mutex, can change shared variable _XiaoMaGe */
g_msg++;
PRINTF("M4 : mailbox mutex,the data is: %d\n", g_msg);
/* Set mutex to allow access other core to shared variable */
MAILBOX_SetMutex(MAILBOX);
}
在M0+内核更改的代码
/* Init Mailbox */
MAILBOX_Init(MAILBOX);
while (1)
{
delay();
M0_TO_M4_T++;
PRINTF("M0receive:%d\r\n",M4_TO_M0_R);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 15u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 19u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 21u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 22u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 25u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 26u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 29u);
GPIO_TogglePinsOutput(GPIO, 0u, 1u << 30u);
/* Get Mailbox mutex */
while (MAILBOX_GetMutex(MAILBOX) == 0)
;
g_msg = (uint32_t *)MAILBOX_GetValue(MAILBOX, kMAILBOX_CM0Plus);
/* The core1 has mutex, can change shared variable _XiaoMaGe */
if (g_msg != NULL)
{
(*g_msg)++;
PRINTF("M0 : mailbox mutex,the data is :%d\n", *g_msg);
}
/* Set mutex to allow access other core to shared variable */
MAILBOX_SetMutex(MAILBOX);
}
编译下载,串口助手观察通信见下图
发现通信正常,是按照设计的要求进行的
点赞
回复评论 (4)
沙发
zongkezhikong
无线LORA资料可进综科智控下载
点赞
2018-4-20 14:16
板凳
star_66666
哦哦,是吗?
点赞
2018-4-20 14:28
4楼
huaiqiao
一直听说这个LPC54系列是双内核的,只是听说,没有见过到底啥样子。现在总算见识到了
点赞
2018-4-20 16:26
5楼
star_66666
是的哦,,
点赞
2018-4-20 16:53
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
TI CCS6 License【破解图示】
dsp的电源芯片,大家一般选什么?
求220交流转48V、12V、5V的线性电源方案
GD32F350体验之九(freemodbus的使用)
CC2640R2F硬件射频从设计到成型
DSP平台车牌识别SDK
关于CC2540的OSAL原理
关于中断架构在raw os 中的设计
渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临!
用c51写的程序怎么使各个模块联合工作
MSP430单片机电源电压监控模块SVS
Launchpad + 呼吸灯这样才好玩~
现代高频开关电源实用技术
开关电源电子公式
IAR给430下载完程序为什么调试不了
开关电源书中所述,因为每个周期电容都被充电,所以电流下降斜率不断增加,如何理解?
什么是Haptics?
MegaMind:在各种Arm芯片上使用Arduino
真心求请教CAN总线的通信问题
数字磁罗盘磁干扰补偿方法研究[1]
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复