假期以来,重新系统学习智能车。首先学习了以下教材: 1.苏州大学王宜怀《ARM Cortex M4 嵌入式系统开发实践—基于飞思卡尔k60系列微控制器》。 本书第二章详细阐述了K60 的144引脚的LQFP封装。即:Low-profile Quad Flat Package.超薄型四边扁平封装。我仔细观察了一下K60那一小块,感觉还真贴切。这144个引脚中有44个工作支撑引脚,这些引脚没有复用功能。主要包括:电源引脚;参考地引脚;AD转换的参考电源,地,高低电平;USB调节器的输入输出;引脚晶振的电源,输入输出等;这些引脚的功能非常底层。 另外100个引脚是I/O资源类引脚,这就是用户比较关心的了。这100个引脚复用功能十分强大。有1—6个功能不等。但都至少有一个功能:GPIO!这一点王宜怀的表格画的很详细,仔细研究就会发现。 但是,一个复用的port,你怎么设定它是哪种功能呢?这就要通过写寄存器来配置了! 下面这句代码来自gpio.c,就是把复用的port设定为GPIO功能的: PORT_PCR_REG(PORTx,n)=(0|PORT_PCR_MUX(1)); 这是通过写PORT_PCR_REG寄存器来实现的。 K60的32位(4GB)地址空间的表我也仔细看了。重点是GPIO的区域和SRAM_L,SRAM_R两个区域。这个信息应该在MK60DZ10.h里面,这个头文件有1万5千多行,是官方的一些最基础的定义,包括大量的寄存器。 下面,我又着重了解了一下晶振的原理。K60使用的是有源晶振,这种晶振的原理是机电效应。是用电损耗很小的石英晶体经精密切割磨削并镀上电极焊上引线做成。这种晶体有一种特性:如果给它通电,他就会产生机械震荡,反之,如果给它机械力,他又会产生电。这就是给它电它振喽。我仍然觉得它很奇妙。 第三章介绍了小灯闪烁工程的组织。首先明白了GPIO输入输出引脚的两种接法:上拉和下拉。这只不过是引脚接高低电平的一种比较形象的说法。GPIO的设定仍然是由寄存器控制的。这些寄存器控制都十分细致,种类很多。就拿GPIO来说,方向,输入输出,等都由大量寄存器控制。 下面了解了一个工程的具体组织方式,至少知道了往往都是.h与.c成对出现的。前者库包含,宏定义,函数声明;后者只需包括前者然后来实现函数功能(function)。 第四章我最大的收获是知道了main.c和isr.c是两条线交替进行的。程序执行main那是默认的,而isr呢?它是外设中断的。具体到智能车就是ov7620发出的中断请求信号,有3个哦。所以isr会和main穿插交替进行(开中断以后)。这一点直到我单步调试的时候才真正明白,应为程序会在main和isr之间跳转。刚开始我还一直不明白程序是怎么进isr.c的呢,因为main.c并没有调用它。其实它是和main并驾齐驱的! 王宜怀老师的书很基础又详细,不错。
|