1、通用GPIO端口的运用:a、设置PMD可以设置GPIO口为输入还是输出。b、设置OFFD寄存器可以设置为数字口还是模拟口。c、当设置GPIO口为输出时,向DOUT寄存器里面写数据可以输出。d、DMASK寄存器为数据输出写屏蔽寄存器,当写响应的端口为1时,写屏蔽,向输出寄存器DOUT写数据不会更新,但**作时仍会出现,不知道为什么。e、PIN读取GPIO口数值的寄存器。f、DBEN去抖寄存器,读取数值时去抖动。g、IMD中断模式控制寄存器,当GPIO端口有中断口的作用的时候,则可以设置中断模式。h、IER中断使能寄存器,控制中断的使能。i、ISR中断源状态寄存器,读取响应的中断状态。j、PUEN上拉寄存器,对端口上拉。
2、定时器的使用:
要使用定时器需要以下步骤:
a、选择系统时钟源给系统提供起振源,(CLK->CLKSEL1)在此寄存器里面选择------->然后使能定时器中断(CLK->APBCLK 在此寄存器中)------>在选择定时器的工作模式(TIMER0->CTL)------->再设定分频(TIMER0->PRECNT在此寄存器中)--------->设定比较器值(TIMER0->CMPR)--->打开定时器中断---->开启定时器功能。
void TM0_Init(void)
{
/* Step 1. Enable and Select Timer clock source */
CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_TMR0_MASK) | CLK_CLKSEL1_TMR0_HXT; //Select 12Mhz for Timer0 clock source
CLK->APBCLK |= CLK_APBCLK_TMR0_EN; //Enable Timer0 clock source
/* Step 2. Select Operation mode */
TIMER0->CTL = (TIMER0->CTL & ~TIMER_CTL_MODESEL_MASK) | TIMER_CTL_MODESEL_PERIODIC; //Select periodic mode for operation mode
/* Step 3. Select Time out period = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
TIMER0->PRECNT=0; // Set Prescale [0~255]
TIMER0->CMPR = 12000; // Set TCMPR [0~16777215]
// (1/12000000)*(255+1)*(46875) = 1HZ
/* Step 4. Enable interrupt */
TIMER0->ISR = TIMER0->ISR; //Write 1 to clear for safty
TIMER0->IER = TIMER_IER_TMRIE;
NVIC_EnableIRQ(TMR0_IRQn); //Enable Timer0 Interrupt
/* Step 5. Enable Timer module */
TIMER0->CTL |= TIMER_CTL_TMREN; //Enable Timer0
}
|