lpc1114通用定時(shí)器_計(jì)數(shù)功能
掃描二維碼
隨時(shí)隨地手機(jī)看文章
下面,以“16位定時(shí)器0”為例,做一個(gè)實(shí)驗(yàn),在“16位定時(shí)器0”的捕獲引腳上,獲取脈沖的個(gè)數(shù)?!?6位定時(shí)器0”的捕獲引腳即P0.2腳,在Ration開(kāi)發(fā)板上,可以將P0.2引腳與P1.9腳相連,因?yàn)镻1.9腳是按鍵KEY1的輸入引腳,所以,只要按一下按鍵,計(jì)數(shù)就會(huì)增加1。
新建一個(gè)工程,結(jié)構(gòu)如下圖所示:
在timer.h文件中,加入T16B0_cnt_init()函數(shù)聲明,如下圖所示:
#ifndef __NXPLPC11xx_TIME_H__
#define __NXPLPC11xx_TIME_H__
extern void T16B0_init(void);
extern void T16B0_delay_ms(uint16_t ms);
extern void T16B0_delay_us(uint16_t us);
extern void T16B0_cnt_init(void);
#endif
timer.c文件中,加入T16B0_cnt_init()函數(shù)的定義,如下圖所示:
void T16B0_cnt_init(void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON時(shí)鐘
LPC_IOCON->PIO0_2 &= ~0x07;
LPC_IOCON->PIO0_2 |= 0x02; /* CT16B0 CAP0 */
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON時(shí)鐘
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); //使能TIM16B0時(shí)鐘
LPC_TMR16B0->TCR = 0x02; //復(fù)位定時(shí)器(bit1:寫(xiě)1復(fù)位)
LPC_TMR16B0->CTCR = 0x02; // 計(jì)數(shù)器模式 引腳CT16B0_CAP0下降沿計(jì)數(shù)
LPC_TMR16B0->TCR = 0x01; //啟動(dòng)定時(shí)器:TCR[0]=1;
}
第3~6行,目的是為了把P0.2腳設(shè)置成CT16B0CAP0功能,即16位定時(shí)器0的捕獲引腳,改變引腳功能,就需要打開(kāi)IOCON模塊的時(shí)鐘,所以給SYSAHBCLKCTRL寄存器的bit16寫(xiě)1,使能IOCON時(shí)鐘。引腳功能設(shè)置好以后,IOCON模塊就沒(méi)有用了,所以把它的時(shí)鐘再關(guān)閉,還能降低單片機(jī)的功耗。
第9行,給CTCR寄存器寫(xiě)0x02,把定時(shí)器設(shè)置為計(jì)數(shù)模式,并設(shè)置CAP0接收下降沿信號(hào)。
CTCR:計(jì)數(shù)控制寄存器
位符號(hào)值描述復(fù)位值1:0CTM定時(shí)/計(jì)數(shù)模式。000x0定時(shí)模式:每個(gè)PCLK的上升沿0x1計(jì)數(shù)模式:TC在CAP引腳上的上升沿遞增0x2計(jì)數(shù)模式:TC在CAP引腳上的下降沿遞增0x3計(jì)數(shù)模式:TC在CAP引腳上的雙邊沿遞增3:2CIS
計(jì)數(shù)輸入引腳選擇000x0CT32Bn_CAP00x1保留0x2保留0x3保留31:4
保留位,不能給這些位寫(xiě)1–
CTCR寄存器用來(lái)決定定時(shí)器是做定時(shí)還是計(jì)數(shù),并且可以設(shè)置上升沿、下降沿和雙邊沿計(jì)數(shù)。
在main.c文件中,輸入以下代碼:
#include “l(fā)pc11xx.h”
#include “timer.h”
#include “uart.h”
int main()
{
uint16_t temp1,temp2;
UART_init(9600);
T16B0_cnt_init();
temp1 = LPC_TMR16B0->TC;
while(1)
{
temp2 = LPC_TMR16B0->TC;
if(temp2!=temp1)
{
temp1 = LPC_TMR16B0->TC;
UART_send_byte(temp1);
}
}
}
main函數(shù)實(shí)現(xiàn)的功能是,如果發(fā)現(xiàn)計(jì)數(shù)器遞增,就把現(xiàn)在記下的數(shù)發(fā)到串口,打開(kāi)串口調(diào)試助手,選好串口號(hào),波特率設(shè)置為9600,按動(dòng)開(kāi)發(fā)板上的按鍵KEY1,即可看到效果。