如何用KIT_AURIX_TC275_LITE板卡实现多核点灯

描述

使用TC275的三个核心,轮流休眠待机,分别控制板卡上的LED灯,如core0检测按键按下,唤醒core1翻转LED1,一秒后,唤醒core2翻转LED2,系统休眠。

那我们今天就来看看如何用KIT_AURIX_TC275_LITE板卡的三个核心实现这个任务。

一起来看下方项目介绍。

硬件介绍

项目使用的开发板为英飞凌的 KIT_AURIX_TC275_LITE 开发板,其搭载的TC275芯片是一个三核的车规级芯片。

本项目使用了全彩LCD、按键与姿态传感器模块,并使用SPI扩展接口控制LED灯板。

功能展示

本项目实现的功能非常简单,就是点击按键,一个LED翻转,另一个LED等一秒钟之后翻转。

实现思路

首先配置环境

在英飞凌官方的例程中找寻相关的,学习其API

在B站搜索英飞凌多核视频学习

把上述相关程序缝到一块。实现过程

1. 环境配置

我开发的这几天官网的下载安装包功能不知道为什么不好使了,而且之前做智能车使用的1.3.0版本过于老旧,甚至不支持导入例程的功能,于是在这里分享一个群友分享的1.6.0版本的安装包:

2. 多核开发

多核开发的主要逻辑写在CPU0中,CPU1与CPU2只负责翻转对应的LED,且长期处在休眠模式。

CPU0使用一个定时器STM0定时200ms轮询检测按键是否被按下,如果被按下,就依次唤醒另外两个核,而后会让CPU0自己睡眠。每个定时器中断到来,CPU0都会被唤醒,所以中断处理函数中什么都不用写即可。

遇到的问题及解决办法

1. 编译不过问题

不知道为什么ADS编译不过去,此时右键左侧文件导航栏中的项目文件夹,点击Clean Project即可。

2. 延时函数问题

遇到了一个脑残问题,我把延时函数写到了定时器里面,且延时时间超了定时器时间,以至于一运行就卡死,之后注意别犯傻了。

3. 外设初始化位置问题

在写代码的过程中 GPIO初始化的位置很有讲究,其实在任意一个核初始化,别的核都是可以用的,但是问题是如果你唉CPU0核中初始化CPU1核用的外设,由于三个CPU是同时在跑的,如果CPU0还没有初始化结束,CPU1就已经跑到了使用GPIO的语句,就寄了,所以为了保险起见,最好哪个核用哪个外设,就把这个外设的初始化写在这个核的代码里。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分