您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
新唐的定時器一般有很多功能:普通的定時功能,事件計數(shù)功能,捕獲功能,超時觸發(fā)ADC等等。大家如果感興趣可以讀一下《NANOB Timer功能介紹以及在弱灌注中的應用.pdf》,雖然各個系列Timer功能有差異,但是使用方法上基本一致,只是細節(jié)上有些差異。用到的時鐘記得在Sys_Init中使能并等待時鐘穩(wěn)定。
這里只介紹簡單的定時功能。
/*Timer0中斷處理函數(shù),Timer0發(fā)生超時,捕獲等都會發(fā)生該中斷。但是因為下面的代碼只使能了超時中斷,所以該代碼只demo超時的處理*/ void TMR0_IRQHandler(void) { static uint32_t sec = 1; printf("%d sec\n", sec++); /*打印時間*/ // 清除中斷標志 TIMER_ClearIntFlag(TIMER0); }
int Timer_Init(void) { /* Timer0選擇HXT做時鐘源,并且不除頻 */ CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HXT, CLK_TMR0_CLK_DIVIDER(1)); /* 使能Timer0的時鐘 */ CLK_EnableModuleClock(TMR0_MODULE); /* 初始化Timer0,周期模式,每秒發(fā)生一次中斷*/ TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1); /*如果要修改預分頻和比較寄存器的值可以用下面兩個宏*/ //TIMER_SET_CMP_VALUE(TIMER0, 0xFFFFFF); //修改比較寄存器的值 //TIMER_SET_PRESCALE_VALUE(TIMER0, 0x0); //修改預分頻的值 /* 使能Timer0中斷 */ TIMER_EnableInt(TIMER0); NVIC_EnableIRQ(TMR0_IRQn); // 啟動 Timer 0 TIMER_Start(TIMER0); }
這個Timer_Init函數(shù)里面使能時鐘和IP選擇時鐘源的函數(shù)和前文系統(tǒng)初始化中的不太一樣,該節(jié)中IP選擇時鐘源和使能時鐘調(diào)用的是函數(shù),而系統(tǒng)初始化中是直接訪問寄存器的方式。這兩種方式都可以。直接訪問寄存器的方式比較節(jié)省ROM,本節(jié)的方式容易修改。
上一篇:C語言函數(shù)的概念
下一篇:C語言字符串的輸入輸出
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08