TC264是双核单片机,在用两个和运行同一资源时会出现竞争的问题,例如CPU0,CPU1在同时调用一个串口时会出现竞争,导致从串口输出值出现乱码,我们可以通过软件来解决这一问题,这就类似于互斥锁。
双方在在开同一扇的同时,谁先拿到钥匙谁就开门,开完门后放回钥匙,等待下一次开门,这样双方就不会出现资源竞争了。
TC264底层也给出了解决方案:

IFX_EXTERN boolean IfxCpu_acquireMutex(IfxCpu_mutexLock *lock);
boolean IfxCpu_acquireMutex(IfxCpu_mutexLock *lock)
{boolean         retVal;volatile uint32 spinLockVal;retVal      = FALSE;spinLockVal = 1UL;spinLockVal =(uint32)__cmpAndSwap(((unsigned int *)lock), spinLockVal, 0);/* Check if the SpinLock WAS set before the attempt to acquire spinlock */if (spinLockVal == 0){retVal = TRUE;}return retVal;
}

例程:

CPU0:
extern IfxCpu_mutexLock g_MutexUart;
main()
{if(IfxCpu_acquireMutex(&g_MutexUart))  //判断互斥量是否使用{UART_PutStr(UART0, "这里是CPU0 \r\n");IfxCpu_releaseMutex(&g_MutexUart);  //互斥量释放}delayms(5);  //这个时间可以让CPU1来使用互斥量
}
CPU1:
IfxCpu_mutexLock g_MutexUart;  //设置互斥信号
main()
{if(IfxCpu_acquireMutex(&g_MutexUart))  //判断互斥量是否使用{UART_PutStr(UART0, "这里是CPU1 \r\n");IfxCpu_releaseMutex(&g_MutexUart);  //互斥量释放}delayms(5);  //这个时间可以让CPU1来使用互斥量
}

按照这个思路我们也可以设置一个全局变量来充当这个互斥量,令这个全局变量为1(钥匙),其中一核拿到1(钥匙),让这个全局变量为0,此时另一核判断全局变量为0(没拿到钥匙),拿到钥匙的核中执行完相应的程序后,再令设置的全局变量为1,这样就是先抢钥匙,抢到钥匙在进行相应的程序,就不会存在资源竞争的问题。

英飞凌TC264之双核互斥相关推荐

  1. 英飞凌TC264学习(一) GPIO

    英飞凌TC264学习(一) GPIO 1.综述:基于龙邱库函数 摄像头接口 龙邱神眼或者OV7725模块 ● 数据端口:P02.0-P02.7口,共8位,接摄像头的数据端口: ● 时钟像素:外部中断第 ...

  2. 英飞凌TC264学习(二)外部中断

    英飞凌TC264学习(二)外部中断 一.外部中断说明: 1.256个向量第一个也就是第0号的中断向量无效.仅用来占位置.所以一共有255个向量,但是要占用256个向量的位置 2.向量表以优先级别排序数 ...

  3. 英飞凌TC264学习(四)串口通信UART

    英飞凌TC264学习(四)串口通信UART 串口部分的函数在LQ_UART.c中 TC264有四路UART中断,需要中断可以来配置中断,与外部中断一样,中断服务函数,中断号,优先级,不需要中断的话就不 ...

  4. 智能车竞赛-英飞凌TC264核心板-开源

    英飞凌TC264核心板分析 全国大学生智能汽车竞赛转眼间已进行到第十七届,在参加此次比赛的组别也在积极准备,都在为7月份的车赛取得优异成绩而努力奋斗着.前一段时间,组委会也将部分组别比赛规则公示.作为 ...

  5. 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植AS5600 软件IIC

    [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 一.编码器选择 二.通讯方式 ...

  6. 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制

    [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制 [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制 一.电机选择 ...

  7. 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(2)-SVPWM波实现

    [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(2)-SVPWM波实现 SVPWM波实现就是无数电机foc控制的核心,所以这一节就如何在英飞凌无刷驱动上时间互补pwm波形做讲解 [F ...

  8. 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(3)-FOC控制原理矢量控制

    英飞凌TC264无刷驱动方案simplefoc移植(3)-FOC控制原理矢量控制 无刷电机是矢量控制,是交流电机调速的核心,也是Foc控制的核心 以下内容学习自[自制FOC驱动器]深入浅出讲解FOC算 ...

  9. 英飞凌TC264之ADC

    ADC: ADC理论有8个转换器,可同步转换:每个转换8个通道,精度为8/10/12位. ADC端口AN可以作为输入口,不可作为输出口,与ARM单片机不同! ADC初始化: /* * 参数说明:cha ...

最新文章

  1. Effective C++ item01 尽量以const enum inline替换#define
  2. 【Qt开发】编译时报undefined reference to问题的解决方案
  3. python diff函数_使用Python创建你自己的diff工具
  4. python基础(part11)-作用域LEGB
  5. 7-45 银行业务队列简单模拟 (10 分)
  6. 最强android平板,最强安卓平板!华为MatePad Pro来了:搭载麒麟990
  7. 建议考事业编吗?为什么?
  8. ‘python3\r’: No such file or directory
  9. ITA 测试时之数据准备(大量数据导入与导出)(主键的最高位最好有值,而不是0)。
  10. 矩阵连乘 动态规划_利用动态规划解LeetCode第62题:不同路径
  11. java web 播放器代码_各种网页播放器代码大全
  12. 【无线安全】Kali 暴力破解 WiFi 密码步骤详解
  13. 鸟哥linux命令行总结之——文件的压缩打包和备份
  14. dede 表单必填_织梦给自定义表单增加必填功能,织梦表单必填设置
  15. 西数硬盘刷新固件_关于西数硬盘转速的fake news
  16. android 打开微信客户端,Android中接入微信客户端心得
  17. 微搭典型应用需求梳理
  18. TileMap大型地图网格属性设置
  19. 女孩子付钱用计算机,“让女生付钱太没面子了,你转账给我吧。”
  20. POJ 3165 最短路 floyd

热门文章

  1. 蒙特卡洛未来股票价格matlab,股票组合价格蒙特卡洛matlab
  2. QGC地面站配置PX4Flow光流传感器
  3. 贝叶斯学习(Bayesian Learning)基础篇
  4. Elasticsearch搜索引擎一些参数含义和用法
  5. 联想ThinkSystem服务器 安装ESXI 7.0 踩坑记录
  6. 南师大计算机学院博雅课的要求,南师大博雅课程
  7. 搭建K8S 的dashboard的坑the server could not find the requested resource
  8. 雅可比(Jacobi)及高斯-塞德尔(Gauss_Seidel)迭代法求解线性方程组的matlab现实
  9. 行测-言语理解选词填空必备词语汇总
  10. Android各大版本支持的新特性的汇总