1.前言
在上一節中,我們進行了系統初始化,對時鐘源進行分頻倍頻得到所需的系統時鐘。但我漏了重點,在配置前需要包含系統級頭文件#include "DSP28x_Project.h",可以把它理解成芯片數據包,封裝好了外設及系統的寄存器。
這一節我們進行系統配置的最后一個環節,GPIO及中斷初始化配置。
2.Initialize GPIO
通常我們的DSP28335是作為一個電子電路系統的主控芯片,其外圍掛載了很多器件或電路。在用戶程序開始工作前,通常我們需要將IO口初始化成已知電位,且可根據電路情況進行調整。
上圖是TI官方的例程示范,根據需要調整GPIO初始化函數中的相關配置,達到初始化的目的。
這一環節的作用是為了避免我們后續初始化中斷向量表后直接有中斷產生的情況(意思就是我們的用戶程序還沒運行就有未知的中斷發生,顯然不是我們預期的結果)。
首先關閉所有中斷。
然后初始化中斷控制寄存器。
28335有12組中斷控制寄存器,一一對應著IE的12個中斷。
禁止CPU中斷,清除CPU中斷標志位。
在這里很多人可能會有疑問,這個PIE與IE到底是什么,怎么都要初始化?其實,CPU一次只能執行一個中斷,當我們同時打開多個中斷并都產生中斷標志時,我們就需要對其進行管理,而PIE是中斷的控制器,能夠依據用戶設置對中斷進行管理。
上圖非常清晰地體現了PIE與IE的關系。
4.初始化PIE向量表
PIE可管理96個中斷,那么這96個中斷的中斷服務函數的入口地址我們需要進行指定,PIE中斷向量表存儲相對應中斷服務函數的入口地址。在某個中斷服務函數需要運行時PIE將查詢中斷向量表,并將表中入口地址賦予CPU中斷執行。
上圖是PIE管理的中斷類型及其向量表偏移地址。
上圖是PIE部分組的中斷向量地址。
一般調用InitPieVectTable()函數將中斷服務函數入口地址存入中斷向量表中對應位置。在后續的用戶程序中,我們可以靈活的修改默認的中斷服務函數,但是要重新刷新入口地址(后續用到時詳細說明)。
5.用戶代碼
系統初始化在這里已經全部完成,接下來就是用戶代碼。
我們根據工程需要初始化相關外設,編寫用戶程序實現相關功能。然后就到了自由發揮的大舞臺嘍!
截止到目前為止,DSP28335的工程創建、系統初始化配置都已經完成了,接下來我們將開始系統模塊和常用外設的學習。
-
寄存器
+關注
關注
31文章
5363瀏覽量
121027 -
中斷
+關注
關注
5文章
900瀏覽量
41684 -
GPIO
+關注
關注
16文章
1216瀏覽量
52310 -
DSP28335
+關注
關注
22文章
59瀏覽量
40747 -
時鐘源
+關注
關注
0文章
93瀏覽量
16024
發布評論請先 登錄
相關推薦
評論