历史上的今天
返回首页

历史上的今天

今天是:2025年01月13日(星期一)

正在发生

2021年01月13日 | lpc1768之开发板初始化工作

2021-01-13 来源:eefocus

要写一个点亮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();


推荐阅读

史海拾趣

DMC Tools公司的发展小趣事

DMC Tools公司自创立之初,就注重技术创新。早期,公司研发团队针对电子行业对高精度工具的需求,成功开发出一系列具有自主知识产权的精密切割工具。这些工具不仅提高了生产效率,还降低了生产成本,迅速在市场上获得了认可。随着技术的不断进步,DMC Tools公司不断推出新产品,满足电子行业日益增长的需求,逐步在市场上树立了自己的品牌。

Harbour Industries公司的发展小趣事

背景:随着全球化的深入发展,电子行业也迎来了国际化的浪潮。Handok意识到,要想在激烈的国际竞争中立于不败之地,必须加强与国际市场的联系和合作。

发展:Handok积极寻求与国际知名电子企业的合作机会,通过技术引进、联合研发等方式不断提升自身的技术实力和产品品质。同时,公司还加大了对国际市场的开拓力度,通过参加国际展会、设立海外分支机构等方式扩大品牌影响力。

影响:国际合作的成功为Handok带来了更多的发展机遇和市场空间,公司的国际知名度和竞争力显著提升。

Eagle-Picher公司的发展小趣事

然而,Eagle-Picher的发展并非一帆风顺。1991年9月16日,位于密苏里州乔普林的Eagle-Picher工业公司电子部遭受了一场毁灭性的大火。火灾导致公司的电池生产设备化为灰烬,给公司的业务带来了巨大的打击。然而,Eagle-Picher并没有放弃,而是迅速组织力量进行重建和恢复生产。这一事件虽然给公司带来了短期的困难,但也展现了Eagle-Picher的坚韧和决心。

DAYA公司的发展小趣事

大雅智能,一家以智能厨电产品为主的电子科技公司,自创立之初就致力于技术研发和创新。在电子行业竞争激烈的今天,大雅智能凭借其独特的智能控制技术,成功打造了一系列具有市场竞争力的产品。从最初的智能电饭煲到如今的智能厨房生态系统,大雅智能通过技术创新,不断满足消费者对智能生活的追求,逐渐在电子行业中崭露头角。

Amphenol Nexus公司的发展小趣事

作为一家专注于电气元件和连接器制造的公司,Amphenol Nexus Technologies始终致力于技术创新和产品升级。公司投入大量资源用于研发,不断推出具有创新性和高性能的新产品。例如,在高速连接器领域,Amphenol Nexus Technologies成功研发出了112G高速背板连接器,这一产品满足了人工智能等前沿技术对高速传输的需求,为公司带来了新的增长点。

蜂鸟无线公司的发展小趣事
如电钻、电锯等电动工具,通过PWM调速电路可以实现转速的精确控制,提高工作效率和安全性。

问答坊 | AI 解惑

USB转并口

我的本子上只有usb口,想买个430的学习板,可是430的usb下载线太贵了!请问有没有可以用的usb转并口啊?…

查看全部问答>

高密度电源的工艺设计(看看什么叫牛!140mm*44mm*90mm做到5000W)

高密度电源的工艺设计(看看什么叫牛!140mm*44mm*90mm做到5000W)    在网上看到“斜阳古道”大哥发了篇“高密度电源的工艺设计”,看了之后简直是叹服!拿出来与大家分享。在网上找了半天也没找到原理图什么的, ...…

查看全部问答>

温度传感器出现的问题

最近公司里两台热辊里的温度传感器出现一个偏高(实测126℃),一个偏低(实测121℃),后来把两个温度传感器交换了一下,两个传感器都变成了123℃,可能是什么原因?温度传感器后面有个放大器。…

查看全部问答>

内存控制器和mmu问题

内存控制器和mmu有什么区别? 现在接触davinci系列处理器,其中包含arm926、vpss(主要用于视频处理)、dsp 这些东西都在内存控制器之下工作,而mmu只在arm端有,想问是内存控制器是在arm内还是另外在片内独立的一个东西,而mmu和内存控制器有什么 ...…

查看全部问答>

关于Intel IPP库使用问题

大侠们好。 最近做有关MPEG4编解码的项目,用的是Intel PXA270处理器。现在发现编码程序的代码中 mp4emblk.c里ippiCopyBlock_8x8_8u和ippiReconBlock_8x8这两个函数不能够链接。也就是说Intel IPP库里面没有这两个函数。 我下的IPP版本是5.0的。 ...…

查看全部问答>

M3 串口与51单片机串口能直接相连吗?

我现在用的是LM3S6965,我想请问一下这个的串口与51单片机的串口可以直接相连吗?RX接TX,TX接RX可以吗?我正在试,好像不行。问什么啊?哪位帮帮我?…

查看全部问答>

线性匹配独立电流源与传统白光 LED 驱动器解决方案之间的对比

摘要 WLED 解决方案集成了白光 LED 工艺的优点以及创新型节能方案(例如:环境光控照明),从而可以在更广范围内应用,并获得了比过去任何时候都更高的效率。现有的绝大多数 WLED 驱动器解决方案仍然要和电压升压驱动器解决方案搭配使用;但是,随 ...…

查看全部问答>

STM8的ADC连续模式EOC什么时候清零

STM8的ADC连续模式EOC什么时候清零? 连续模式下,ADC连续转换:EOC会置位,然后清零,再转换。是这样的吗? 如果是的话,那我们怎么引用其中一次的转换结果呢?…

查看全部问答>

StellarisWare Software Update (2011.11.08)

很久没关注M3发展了,今天更新了一下进度发现原流明网站(LuminaryMicro)已经随风而挺,都跑到TI官网上。老实说,TI官网的呈现方式不如旧网站直觉,而且下载软件得受限美国软件输出协议,有点麻烦。新的StellarisWare Software Update专页于:http:// ...…

查看全部问答>

TI StellarisWare图形库中文显示使用指南

文章出自网络,如有冒犯,立刻删除…

查看全部问答>