||
在这个寒假到来之前,我还打算着如何度过自己的这个寒假,我原准备去打工,工作都找好了,但是听说了学校组织了假期的电子设计培训,喜爱电子设计的我积极报名参加了,在这个寒假很高兴能留下来,虽然条件有些艰苦(没水,没暖气,吃的也没平常那么丰富,学习时间可能比平常更长),但是有这么多的同学、老师一起相伴,我们不仅不觉的条件艰苦,反而觉得在这里过得很充实,每天做着自己喜欢做的事情,感觉一天的时间就好像几个小时而已。每晚9点之后不舍的离开!更重的是在这里我们得到了更好的成长。我们不仅我们不紧在这里学到了很多的东西,更加加深了我们之间的友谊.这里是一个很好的学习平台,我们都得到了应有的成长。非常感谢老师,提供给我们这样的机会。
去年暑假参加培训的时候就开始学习430了,刚开始学习的就是Lanuchpad虽然遇到很多困难,但现在来看自己还是学到了很多东西,上学期又学习了msp430f149
,期末考核做了广告牌控制系统。因此,我对自己的假期培训做了如下安排:
1.Stellaris® LM3S811 Evaluation Kit进行学习。
2.对430的学习简单做一个总结。
3.做2010年TI杯的“信号合成实验”的题目
首先我对对ARM Cortex-M3 内核进行了了解。ARM Cortex-M3内核的处理器为高性能、低成本的平台提供一个满足小存储要求解决方案(minimal memory implementation)、简化管脚数、以及低功耗三方面要求的内核,与此同时,它还提供出色的计算性能和优越的系统中断响应能力。ARM Cortex-M3处理器为高性能、低成本的平台提供一个满足小存储要求解决方案(minimal memory implementation)、简化管脚数、以及低功耗三方面要求的内核,与此同时,它还提供出色的计算性能和优越的系统中断响应能力。如 图一Stellaris 系列高级方框图:
图一Stellaris 系列高级方框图
因此,很有必要对Cottex-M3内核的处理器进行学习。试验室正好拥有Stellers LM3S811 Evaluation kit.于是我就选择了LM3S811的学习。
在这几天里,我首先对拿到的板子硬件结构进行了了解。如下图二所示:
图二 我所用的板子
接着我了解了一下它的内部结构及资源状况。
接下来学习了它的开发软件KEIL FOR ARM,在期间遇到了很多的问题,驱动安装不正确,配置不正确,编译不过去,还有它的仿真方法等。通过学长及自己解决问题,我发现了自己学习方法中从在的问题。及时做了改正。
接下来我学习了Stellaris驱动库API的使用方法。
接下来就是程序的调试。流水灯,PWM等。每个软件都会遇到不同的问题。在你学习它的时候一定要注意他与你所使用的其它软件不同的地方进行总结,不要以为都是一样的。这样你会走很多弯路,我就是这样。
2.对430学习的总结
430单片机确实和51有些差别,低功耗模式非常适合当前的发展趋势。丰富的时钟选择,及内部和外部资源。都决定了它是一款难学,好用,方便的单片机。强大的功能又对它的稳定性提出了挑战
通过自己的学习,以及这几天帮助同学解决其中的问题,我同时对430有了更加深入的认识,下面我也就对它简单做如下总结:
430的学习中时钟是一个很重要的模块:首先有3个可选的时钟源.方便MCLK、SMCLK、ACLK的选择。对速度要求不同,选择不同的时钟可以降低功耗。减少不必要的开销。同时内部集成的很多模块丰富的时钟源可供选择,来满足不同需要。可以说是相当容易实现和方便使用。
丰富的片内资源可以满足你的很多需求:IIC,SPI,UART等众多的通新方式。片内集成的比较器,ADC,DAC,温度传感器,还有丰富的定时器资源(如看门狗定时器,TimerA ,TimerB定时器)可供选择,多路PWM的产生方便方波的调制及发生,更易于电机的调试等丰富的资源可以满足你的很多需求。对单片机玩家来说不能不说是一个宝贝。
但是430单片机也有很多不稳定的地方。仿真器就是其一,现在我用过得430仿真器也不下5,6种,期间坏过一个仿真器,解决过很多次仿真器下不进去的问题。浪费了很多时间在仿真器上。
哦,现在想起了,还有很重要的一点没说。就是中断,430有着丰富的中断。以及不同的中断优先级级。对于中断,首先要看是否有中断源触发中断,接着,如果中断发生说明中断标志位置位。中断标志位置位是一个典型的问题,你一定要注意了,当这个中断标志位置伟的时候,有中断发生的时候会怎么办,中断是否会自己进入中断时或退出时对中断标志位清0。如果中断发生,中段源(可以是高级也可以是低级)是否会触发中断,触发中断时会发生什么情况。不同的中断它的标志位是否会自动清0一定要关注,而且要清楚,否则出现怪异的现象是你就不知其所以然了,看着程序没问题,就是不正确的结果。其实这里面有一个很重要的东西,逻辑,你一定要清楚,你不清楚哪里,哪里就要发生问题了。定时器中断是一个很典型的中断。
比如说,Timer-A 它有两个中断向量,3个中断源。其中cctl1和cctl2公用一个中断向量,这里会发生很多的问题。具体识别的时侯,由TAIV来识别是哪一个中断向量。同时这句话执行的时候,中断标志位也会清0.,当有其它中断发生的时候,它会停止当前的工作区执行另外一个中断。同时Timer-A A1 只有一个中断向量的时候,他还与计数模式相关。去掉TAIV 判断的时候,跟加上这句判断的现象有很大的差别,我现在还没想通这里为什么会是这样,所以建议大家使用的时候,最好加上这句判断。CCTL0,CCTL1,CCTL2中断向量级别依次降低。还有,一个计数器,两个中断向量,三个中断向量源,他的计数也是分大小和前后的。这一点也要注意。
看门狗很有意思,除了防止程序跑飞,我们还可以利用它来当定时器使用,它使用起来比较方便,可以做为长时间的定时,也比较准确。比如说1s,2s
Lanchpad与其它系列的区别,比如说f149
简单的列举几个: 首先有一些寄存器是不一样的,比如说BCSCTL3、
中断向量也不太一样
它的时钟也和149的不太一样,他没有高频晶振。
内部的DCO也产生的频率也不太一样,具体来说。要看你选择的内部电阻,和外部电阻,不同的电阻,对DCO的频率影响很大。DCO是一系列不同平率的值,具体你可以参考资料计算你想要的频率值。同时DCO很有很好用的一点。就是可以利用它来很容易实现1M ,4M,8M ,12M,16M等不同频率的值,具体来说,我侧过它的准确度,还是比较精确的。用的时候在头文件中已经定义好了,你直接调用几个。很放方便也很实惠!
说一个写程序的问题,作为一个程序员你一定要知道你的每一句代码会是什么效果,c语言是单程执行的,所以你一定要保证你前面的每一句话都是对的,你的后面的语句才有意义。你觉得呢。写程序一定要写注释,语句简练。一句能写的尽量不要用多句去写,逻辑一定要严密。
作为一个程序员你应该了解一下编译器。他会做哪些工作。有一些非致命错误引起的运行是错误是可怕的。他会得到不正确的结果。我们调试只能解决编译时错误,而不能完全解决运行时错误。因为编译器对有些东西是不进行检测的,他不可能做到全面,所以你得在它不留意的地方你得留心了。
程序不怕错,就怕不美观,影响调试心情和逻辑。很有必要培养自己的程序写作方法。
即使再小的错误,也可能要发生,一定要细心。这几天我给别人调程序的时候,自己以为不可能发生错误的地方,结果还是出错了(一个简单的延时都有可能出错什么还不可能发生错误呢,我花了两个小时居然没有想到是延时函数出问题了),任何地方都有可能出错,不要放过每一条语句。我们能做的就是尽量减少错误的发生。
遇到问题,编译器,电脑是你最好的老师,你可以试吗。
你调程序,得找一个好的硬件,你得用一些方法检测了,再去调试。
别老怀疑芯片坏了,这坏了,那也坏了,要知道哪坏了,只有你检测了才知道。
学东西一步一步来,要想深入的了解一个东西,不停的去尝试换种思维再试一下。很有必要对
写好的程序进行简化。你会从中学到很多东西。变换思维看自己的程序或许你会有意想不到的思考。
逻辑是程序对你的考验。话越说越多了,就说到这吧!
3关于“信号合成实验”题目
刚开始做频率发生,觉得还可以,但是做到放大,滤波和改变相位的时候就感觉不知道在说什么了。我现在还没学模电,只是对其中一部分进行了了解,所以就放弃了做这个题目。决定补一下模电的知识,乘着培训期间有时间,我模电中的学了学,现在对很多概念有了认识了解。
总结
这段时间忙碌的时光是很充实的,我们的时间过得很快,以至于没觉得,培训已经结束了, 我很高兴能够参加这个培训,和很多同学一块共同学习进步,在学到知识的同时,更加深了我们的友谊。我不觉得辛苦,我充实并快乐着。这段时光,真心难忘,还没有离开,我已经开始怀念。