PIT_LDVALn寄存器的值為計數的值。當計數遞減為0時,進入中斷服務函數,而計數遞減的周期是通過kinetis的BUS時鍾分頻……
PIT的時鍾源是總線時鍾。總線時鍾是由MCGOUTCLK 經OUTDIV2分頻得到。(內核時鍾是經OUTDIV1分頻得到)
SIM_CLKDIV1 &= ~(7<<25);
SIM_CLKDIV1 |= (1<<24);
初始化 PIT0定時
void PIT0_Init(void) { SIM_SCGC6 |= (1<<23); PIT_MCR = 0; PIT_LDVAL0 = 50000000; PIT_TCTRL0 |= (3); enable_irq(68); }
isr.h文件 重定義 中斷服務函數
#include "project.h" #undef VECTOR_084 #define VECTOR_084 PIT0_IRQHandler extern void PIT0_IRQHandler(void);
isr.C文件 編寫中斷服務函數
#include "isr.h" char str[]="PIT0 1000ms "; U8 i; void PIT0_IRQHandler(void) { for(i=0;str[i]!='\0';i++) Uart4_SendByte(str[i]); PIT_TFLG0 |= PIT_TFLG_TIF_MASK; //清中斷標志 PIT_MCR = 0; }
程序運行……