打印
[Cortex-M0技术交流]

菜鸟学习COREX-MO,NANO130,定时器与GPIO口的学习!

[复制链接]
2260|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
carshow|  楼主 | 2013-5-9 11:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝