使用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的语句,就寄了,所以为了保险起见,最好哪个核用哪个外设,就把这个外设的初始化写在这个核的代码里。
审核编辑:刘清
-
lcd
+关注
关注
34文章
4424浏览量
167410 -
定时器
+关注
关注
23文章
3246浏览量
114721 -
Aurix
+关注
关注
1文章
71浏览量
10912 -
SPI串口
+关注
关注
0文章
4浏览量
922
原文标题:基于英飞凌AURIX TC275 Lite的多核点灯-Funpack S2 #2项目分享(1)
文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论