您的位置 首页 模拟

32位单片机LPC11C14学习

功能:(设置GPIO口方向),参数(端口号,位,输入或输出(0入1出))GPIOSetDir(PORT0,1,0);GPIOSetValue()一

功用:(设置GPIO口方向),参数(端口号,位,输入或输出(0入1出))

GPIOSetDir( PORT0, 1, 0 );
GPIOSetValue() 一个是设置端口方向,一个是设置输出的值,直接调用就能够了。
如果在片内RAM傍边运转代码而且应用程序需求调用中止,那么有必要将中止向量从头映射到Flash地址0x0。这样做是由于一切的反常向量都坐落地址0x0及以上。经过将寄存器MEMMAP(坐落体系控制模块傍边)装备为用户RAM形式来完成这一点。
#ifdef __DEBUG_RAM
LPC_SYSCON->SYSMEMREMAP = 0x1;
#else
#ifdef __DEBUG_FLASH
LPC_SYSCON->SYSMEMREMAP = 0x2;
#endif
#endif
ARM 微控制器有一个明显的特色,便是都能够把时钟频率倍频到很高,详细到多高,每个系列的微控制器都有一个目标,咱们现在要学的Cortex-M0内核处理器 LPC1114最高能到50MHz,当然,其它的ARM内核微处理器能够倍频到更高,现在很多手机都采用了ARM内核处理器,比方卖的很火的诺基亚 5233便是采用了ARM11处理器,ARM11的处理器的主频为433MHz,比Cortex-M0的50MHz高多了吧!所以Cortex-M0处理器被ARM称为入门级的内核!
要完成对体系时钟的装备,时钟装备图是有必要要看懂的!由于它比文字更具有参考价值,看上这张图装备时钟,肯定不会呈现缝隙!(我主张你把这张图打印出来贴到你的墙上,我便是这么做的,你看着办吧!)接下来,我将一步一步引领你彻底看懂这张“时钟装备图”。
留意了,要开端讲图了!(这张图便是数据手册说的时钟发生单元:CGU(Clock generationunit))
LPC1114 内部含有3个时钟振荡器:体系振荡器,IRC振荡器,看门狗振荡器。体系振荡器便是需求合作外部晶振作业的振荡器(这是任何一款单片机都有的);IRC振荡器便是内部RC振荡器,便是我在上面“总览LPC1114”中说到的那个LPC1114一上电就默许挑选的12MHz时钟振荡器,它的精度没有合作外部晶振的体系振荡器高;看门狗振荡器便是给看门狗供给的时钟振荡器!这么说咱们理解了吧,在接下来的叙说里边,一说到体系振荡器便是指使用外部晶振的时钟振荡器,IRC振荡器便是指LPC1114的内部时钟振荡器,可不要搞混了哦!
咱们先从图的中心点看起,找到“主时钟”三个字,看“主时钟”的左边,有四条线到了“主时钟”的框上,这四条线便是“主时钟”的来历,它们分别是:IRC振荡器,看门狗振荡器,倍频之前的时钟(sys_pllclkin)和倍频之后的时钟(sys_pllclkout)。也便是主时钟能够在这四个时钟源傍边挑选一个做为主时钟!经过操作(人家专业名词不叫“操作”,叫“拜访”)“主时钟源挑选寄存器(MAINCLKSEL)”完成。这个32位的主时钟源挑选寄存器MAINCLKSEL只用到了两位(谁让两位就能够表明四种状况呢!),剩余的全都是保存位,如下:
位(bit) 符号 值 描绘 复位值
1:0 SEL 00 挑选IRC振荡器 00
01 挑选输入到PLL之前的时钟
10 挑选看门狗振荡器
11 挑选PLL之后的时钟
31:2 – – 保存 0
看复位值,体系默许情况下便是挑选IRC振荡器作为体系的主时钟的。咱们为了让LPC1114发挥出它最大的功能,就喜爱挑选PLL(PLL便是倍频的意思)后的时钟,在程序中这样写:
SYSCON->MAINCLKSEL = 0x00000003;//主时钟源挑选PLL后的时钟
接下来看图上,找到“体系PLL”方框,看它左边倒梯形方框的左边,有三条线,这三条线便是能够做为倍频时钟源的时钟源。这三个时钟源分别是:IRC振荡器,体系振荡器,看门狗振荡器。这不便是LPC1114的三个时钟振荡器么,本来它们都能够做为PLL的时钟源!该挑选谁捏?这就要操作“体系倍频时钟源挑选寄存器(SYSPLLCLKSEL)”了。这个32位的寄存器也是只用到了两位:
(两位就能够表明四种状况了,三个状况当然是捉襟见肘!)
位(bit) 符号 值 描绘 复位值
1:0 SEL 00 挑选IRC振荡器 00
01 挑选体系振荡器
10 挑选看门狗振荡器
11 保存
31:2 – – 保存 0
看复位值,体系默许情况下便是挑选IRC振荡器作为PLL输入时钟源的。已然咱们外部安插了准确的12M晶振,便是想把它做为时钟源的,挑选上面表格傍边的 01,便是挑选了外部12M晶振!(我在先前说到过,“体系振荡器”便是代表外部的晶振,为了避免看的不细心的朋友存在,我仍是再说一遍吧!)
程序中这样写:
SYSCON->SYSPLLCLKSEL = 0x00000001;//PLL时钟源挑选“体系振荡器”
当然,操作次序应该是先挑选PLL的时钟源,再挑选主时钟源!
到现在,“主时钟”左边的部分就看完了,接下来看“主时钟”右面的!
右面部分从上往下看,首要呢,是“体系时钟分频器”方框,方框的右面横线上写着“体系时钟”四个字。怎样样!利诱了吧!这儿方框中所说到的“体系时钟分频器”其实便是“体系AHB时钟分频器(SYSAHBCLKDIV)”。这个寄存器的姓名会把很多人利诱的!由于这个分频器可不只是给 AHB(LPC1114的AHB只要GPIO,关于什么是AHB,什么是APB,去百度搜一下吧!介绍需求两页纸哦!)供给时钟的,它除了给AHB供给时钟,还给内核,存储器以及APB供给时钟。必定含义上说,它便是“体系时钟分频器”了,给这个寄存器写0,LPC1114就不作业了;给这个寄存器写 1,LPC1114的体系时钟便是主时钟除以1;写2,LPC1114的体系时钟便是主时钟除以2,以此类推!假设把外部晶振倍频了4倍作为主时钟,主时钟便是48MHz,对SYSAHBCLKDIV写4,体系时钟便是12MHz。这时分有人就会有疑问了:“神经病啊!已然都倍频起来了,还要缩小”!其实这是由于有时分咱们的电路板上的其它芯片不能够在很快的频率下作业,不然就会犯错,比方无线通信芯片NRF24L01的速率就不能超越10MHz,所以某些时分,需求多分频了。规则最多能够分频255,所以你就能够想到,这个寄存器只用8位就能够了:
位(bit) 符号 值 描绘 复位值
7:0 DIV 00000000 关闭体系时钟 00000001
00000001 用1除
00000010 用2除
……
……
11111111 用255除
31:8 – – 保存 0
一般情况下,咱们写1,程序如下:(这条句子能够不必写,由于默许值便是1)
SYSCON->SYSAHBCLKDIV = 0x01;//AHB时钟分频值为1
再往下看图,数一下,有6个分频器,这6个分频器是:SSP0分频器,SSP1分频器,UART分频器,SysTick分频器,看门狗分频器和CLKOUT引脚分频器。
这些分频器寄存器和SYSAHBCLKDIV是相同的,都是用了8位,都是能够最多分频255,我这儿就不把表格画出来了,仅有不同的是,这6个分频器寄存器的复位值为0,而不是1。也便是说,在默许情况下,这些外设都是不作业的(没有时钟怎样作业!)这彻底是为了节能做奉献,不必就不让它浪费电,用的时分再开!
看最终两个分频器!经过上面的介绍,你现在也能够看懂了,图上说:看门狗的时钟源能够有3个来历,不只是只要“看门狗振荡器”能够给它供给,还能够用主时钟或是IRC振荡器!多么灵敏的LPC1114呀!
LPC1114上的第四引脚是:PIO0_1/CLKOUT/CT32B0MAT2。这个脚能够作为P0.1脚,CLKOUT引脚和32位定时器的输出脚。CLKOUT引脚,望文生义,它是用来输出时钟的,输出时钟有什么用?
用途1:给其他需求时钟的芯片供给时钟;
用途2:用示波器调查此引脚上的频率能够判别你写的时钟装备程序是否正确。
这个引脚在默许的情况下是P0.1脚,假设你要看看到底有没有把外部的12MHz晶振倍频到48MHz,你能够把这只脚装备为CLKOUT引脚,用示波器调查调查!
由图中可知,它能够挑选IRC振荡器,体系振荡器,看门狗振荡器以及主时钟源作为时钟源,挑选谁作为它的时钟源,你就能够看到谁的频率到底是多少了。
(鄙人面会给出完成的程序,不要急哦!)我从前用这个脚调查了一下IRC振荡器的频率,值在12.01MHz和12.00MHz之间来回跳!后来又看了一下外部晶振的频率,稳稳的显现12.00MHz。
到现在,这张图就看完了,你也应该看懂了!
除了上面说到的“挑选寄存器”,还需求有“使能寄存器”的合作才能使挑选的时钟源起作用。下面是一个典型的时钟装备函数:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/255582.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部