程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> MCF52259 PIT中斷

MCF52259 PIT中斷

編輯:C++入門知識

在使用CodeWarrior建立了MCF52259工程以後,系統會生成一個exceptions.c文件,冷火的中斷向量表就在這個文件中。

中斷向量表如下所示:

/* Interrupt vector table */
__declspec(vectortable) vectorTableEntryType _vect[256] = 
{   
   (vectorTableEntryType)__SP_AFTER_RESET,  
   /*   0 (0x000) Initial supervisor SP      */
   _startup,                /*   1 (0x004) Initial PC      */
   asm_exception_handler,   /*   2 (0x008) Access Error    */
   asm_exception_handler,   /*   3 (0x00C) Address Error   */
   asm_exception_handler,   /*   4 (0x010) Illegal Instruction */
   ..........
   ..........
   ..........
   ..........
   asm_exception_handler,   /* 252 (0x___) Reserved  */
   asm_exception_handler,   /* 253 (0x___) Reserved  */
   asm_exception_handler,   /* 254 (0x___) Reserved  */
   asm_exception_handler,   /* 255 (0x___) Reserved  */ 
};

冷火一共有64個中斷源共256個中斷,這些中斷一共分為7個中斷優先級,第7級優先級最高,第1級優先級最低。前64個中斷是保留給處理器處理復位,以及系統的各種異常,後面的64-255 中斷是保留給用戶配置的。
總的來說,冷火的中斷配置過程如下:

1.使能相應的中斷源

2.配置中斷優先級和中斷級別

3.將該中斷的中斷服務程序加入到向量表中。

下面以配置PIT中斷為例說明:

PIT的定時周期計算公式為:

Timeout period=2^PCSRn[PRE]*(PMRn[PM] + 1)/(fsys/2)

/***********************************************
* 配置 1ms中斷  系統頻率 128MHz
* ((2*2)*16000)/(128000000/2)  =  0.001s
***********************************************/
void PIT_Init(void)
{
 	MCF_PIT_PCSR(0)=MCF_PIT_PCSR_PRE(2) 
	|MCF_PIT_PCSR_PIE
	|MCF_PIT_PCSR_RLD 
	|MCF_PIT_PCSR_OVW 
	|MCF_PIT_PCSR_PIF; 
	
	MCF_PIT_PMR(0)=(uint16)(16000 - 1);

	/****************************************
	在中斷向量表119 的位置寫入PIT 中斷服務函數
 	中斷向量表的位置 = 中斷源號 + 64
 	配置PIT的中斷級別   55 + 64 = 119 
 	to allow the request to be disabled
 	the IMR is set to all ones by reset
	****************************************/ 
	MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
	//使能PIT中斷
	MCF_INTC0_IMRH&=~MCF_INTC_IMRH_INT_MASK55;
	
	//配置中斷優先級和中斷級別
	MCF_INTC0_ICR55=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(2);	

	//使能PIT
	MCF_PIT_PCSR(0)|=MCF_PIT_PCSR_EN;
}

最後修改中斷向量表如下:

asm_exception_handler,  /* 117 (0x___) Reserved   */
asm_exception_handler,  /* 118 (0x___) Reserved   */
PIT0_handler,	    	/* PIT0中斷               */
asm_exception_handler,  /* 120 (0x___) Reserved   */
asm_exception_handler,  /* 121 (0x___) Reserved   */

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved