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