使用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文章
4414瀏覽量
167125 -
定時器
+關注
關注
23文章
3241瀏覽量
114505 -
Aurix
+關注
關注
1文章
71瀏覽量
10897 -
SPI串口
+關注
關注
0文章
4瀏覽量
922
原文標題:基于英飛凌AURIX TC275 Lite的多核點燈-Funpack S2 #2項目分享(1)
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論