lpc1768之开发板初始化工作

来源:本站
导读:目前正在解读《lpc1768之开发板初始化工作》的相关信息,《lpc1768之开发板初始化工作》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《lpc1768之开发板初始化工作》的详细说明。

lpc1768之开发板初始化工作

好久没更新博客了,有一段时间觉得更新博客是浪费时间,所以就停下了,现在觉得得不偿失,尤其是对我这种很少做正规的笔记的人来说。我的记忆力实在是太差劲了。前不久买了cortex-m3的开发板,开始了硬件之旅。好吧,就如同beyond在《不再犹豫》中唱道“亲手写上每段得失乐与悲与梦儿”。

要写一个点亮led的程序,首先要做的开发板的初始化工作。要初始化哪些部分呢?

一.开发板初始化操作

1.首先要配置的是:引脚模式选择寄存器。

#define PINMODE0(*(volatile unsigned long *)0x4002C040)

PINMODE0寄存器控制 port0口p0.0---p0.15的上拉电阻/下拉电阻配置

PINMODE1寄存器控制 port0口p0.16---p0.26的上拉电阻/下拉电阻配置

PINMODE2寄存器控制 port1口p1.0---p1.15的上拉电阻/下拉电阻配置

PINMODE3寄存器控制 port1口p1.16---p1.31的上拉电阻/下拉电阻配置

PINMODE4寄存器控制 port1口p2.0---p2.15的上拉电阻/下拉电阻配置

PINMODE5寄存器控制 port1口p2.16---p2.31的上拉电阻/下拉电阻配置

PINMODE6寄存器控制 port1口p3.0---p3.15的上拉电阻/下拉电阻配置

PINMODE7寄存器控制 port1口p3.16---p3.31的上拉电阻/下拉电阻配置

PINMODE8寄存器控制 port1口p4.0---p4.15的上拉电阻/下拉电阻配置

PINMODE9寄存器控制 port1口p4.16---p4.31的上拉电阻/下拉电阻配置

配置方式为:32位寄存器对应管脚的位置0,选择片内上拉电阻方式。

2.禁止全部中断。

__asm int32s IrqDisable (void)

{

CPSIDI

MOVR0, #0

BXLR

}

3.存储器加速模块配置。

#define FLASHCFG(*(volatile unsigned long *)0x400FC000)

FLASHCFG = ((0x05ul << 12) & (~(0x003f))) | 0x003a;

这样将该寄存器的位配置为:0101 0000 0011 1010,使用一个缓冲区可用于指令取指缓冲操作,使用一个缓冲区来处理数据访问的缓冲操作,加速时能,flash访问使用6个cpu时钟。

4.为每个部件设置系统时钟。

#define PCLKSEL0(*(volatile unsigned long *)0x400FC1A8)

#if (FPCLK / (FCCLK / 4)) == 1

PCLKSEL0 = 0x00000000;

PCLKSEL1 = 0x00000000;

#endif

CLKOUTCFG = 0;

5.关闭锁相环PLL0,避免调速错误。

if ((PLL0STAT >> 24) == 1)

{

PLL0CON = 1;

PLL0FEED = 0xAA;

PLL0FEED = 0x55;

}

PLL0CON = 0;

PLL0FEED = 0xAA;

PLL0FEED = 0x55;

while(PLL0STAT & (3 << 24))

{}

6.设置主要时钟。

SCS = (SCS & 0x04) | 0x20;

while ((SCS & (1ul << 6)) == 0)

{}

CLKSRCSEL = 0x01;

PLL0CFG= (((PLL_NVALUE - 1) << 16) | (PLL_MVALUE - 1));

PLL0FEED= 0xAA;

PLL0FEED= 0x55;

PLL0CON= 1;

PLL0FEED= 0xAA;

PLL0FEED= 0x55;

while ((PLL0STAT & (1ul << 24)) == 0)

{}

CCLKCFG = (FCCO / FCCLK) - 1;

while (((PLL0STAT & (1ul << 26)) == 0))

{}

while (((PLL0STAT & 0x00007FFF) != (PLL_MVALUE - 1)) &&

(((PLL0STAT & 0x00FF0000) >> 16) != (PLL_NVALUE - 1)))

{}

PLL0CON= 3;

PLL0FEED = 0xAA;

PLL0FEED = 0x55;

while ((PLL0STAT & (1ul << 25)) == 0)

{}

7.设置usb时钟。

#if FUSBCLK_EN == 1

#if (FCCO % (FUSBCLK * 2)) != 0

PLL1CON = 1;

PLL1CFG = ((FUSBCLK / FOSC) - 1) | (1 << 5);

PLL1FEED = 0xaa;

PLL1FEED = 0x55;

while ((PLL1STAT & (1 << 10)) == 0)

{}

PLL1CON= 3;

PLL1FEED = 0xaa;

PLL1FEED = 0x55;

#else

USBCLKCFG = (FCCO / (FUSBCLK * 2)) - 1;

PLL1CON= 0;

PLL1FEED= 0xaa;

PLL1FEED= 0x55;

#endif

#endif

8.设置存储器加速模块

#if FCCLK <= 20000000

FLASHCFG = ((0x01ul << 12) & (~(0x003f))) | 0x003a;

#endif

#if FCCLK > 20000000 && FCCLK <= 40000000

FLASHCFG = ((0x02ul << 12) & (~(0x003f))) | 0x003a;

#endif

#if FCCLK > 40000000 && FCCLK <= 60000000

FLASHCFG = ((0x03ul << 12) & (~(0x003f))) | 0x003a;

#endif

#if FCCLK > 60000000 && FCCLK <= 80000000

FLASHCFG = ((0x04ul << 12) & (~(0x003f))) | 0x003a;

#endif

#if FCCLK > 80000000 && FCCLK <= 100000000

FLASHCFG = ((0x05ul << 12) & (~(0x003f))) | 0x003a;

#endif

STCALIB = FCCLK / 100;

IrqEnable();

——————————————————————转自xiaoyumylove的博客 ,http://blog.sina.com.cn/u/2307223841

提醒:《lpc1768之开发板初始化工作》最后刷新时间 2024-03-14 01:13:31,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《lpc1768之开发板初始化工作》该内容的真实性请自行鉴别。