注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
liongt的个人空间 https://home.eeworld.com.cn/space-uid-53096.html [收藏] [复制] [分享] [RSS]
日志

LM3开发笔记_2.时钟和GPIO

已有 2540 次阅读2010-11-7 23:08

        今天熟悉了一下LM提供的StellarisWare固件库,感觉跟STM32的固件库有很大的差异,使用上有点像Windows平台API函数的意思,使用外设的时候到对应的固件库看看有啥函数可以用就行了。

 

        原来没接触过LM3的芯片,所以循序渐进先摸索了一下最基本的系统时钟和GPIO。

 

1.系统时钟
        LM3的主振荡器可以连接一个1~8.192MHz的外部晶体,同时内部集成有一个PLL,PLL 输出频率固定为200MHz,由于LM3的最高运行频率为 50MHz,因此如果要使用PLL,则至少要进行4以上的分频。系统时钟设置对应的固件库是sysctl,具体使用方法见后面的程序示例。

 

2.GPIO
        GPIO模块由多个8位端口组成,GPIO管脚可以被配置为多种工作模式,比如高阻输入、推挽输出、开漏输出等等。GPIO设置对应的固件库是gpio,具体使用方法见后面的程序示例。

 

3.示例程序

 

int main(void)
{
      SysCtlClockSet(SYSCTL_USE_OSC |            //不采用PLL
                               SYSCTL_OSC_MAIN |           //主振荡器
                               SYSCTL_XTAL_8MHZ |         //8MHz晶振
                               SYSCTL_SYSDIV_1);            //不分频,结果为8M
    
      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //打开PF时钟
 
      GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, 0x01); //设PF为输出

 

      while(1)
    {
        GPIOPinWrite(GPIO_PORTF_BASE,(GPIO_PIN_0),0x01); //F0高电平
        delay(5000000); //延时
        GPIOPinWrite(GPIO_PORTF_BASE,(GPIO_PIN_0),0x00); //F0低电平
        delay(5000000); //延时
    }
}

 

SysCtlClockSet函数-进行时钟设置;

SysCtlPeripheralEnable函数-在使用GPIO模块之前必须首先要使能;

GPIOPinTypeGPIOOutput函数-将PF设为输出;

 

       在While里不断的反转PF0电平,实现LED的闪烁。

 

        上面的程序为8M主频,如果要实现全速50MHz,可以进行如下更改:

 

       SysCtlClockSet(SYSCTL_USE_PLL |          //采用PLL,200MHz
                                SYSCTL_OSC_MAIN |        //主振荡器
                                SYSCTL_XTAL_8MHZ |      //8MHz晶振
                                SYSCTL_SYSDIV_4);         //4分频,结果为50M

 

        改变设置后,可以看到开发板上的LED闪烁频率明显变快了,证明主频的确提高了。

 

        最后附上源代码,是MDK的。这里顺便提一下,如果不会建MDK的工程,随便找个例子,照猫画虎就行了。

 

        

LED.rar

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章