本帖最后由 mxj1005071012 于 2013-10-22 15:54 编辑
首先说说K60的IO引脚使用已经成了大家的共识。因为使用IO引脚来控制外围器件比如LED等亮灭是检测单片机是否正常运行的最简单标准。说起GPIO,模块本身没有什么复杂的功能,就是字面意思输入输出功能。只要在程序中设定某个引脚为逻辑1,那么相应的引脚就会变成高电平,反之为低电平。但是针对于Kinetis单片机来说,他的GPIO要比51单片机来说发杂了一点,这一点体现在寄存器上。相信大部分朋友都接触过51单片机,这个单片机你在程序中置某一引脚为1,那么他就直接输出高电平,要读取某一引脚的逻辑电平状态,只要先置1再读取就可以了,简单方便。但是对于Kinetis来说,他的GPIO包含了比较多的寄存器,含有:端口数据寄存器、端口置逻辑1寄存器、端口清逻辑1寄存器、端口状态翻转寄存器、端口数据输入寄存器以及最重要的端口数据方向寄存器。使用Kinetis的GPIO引脚读取或输出数据之前,你要先配置他是输入还是输出功能,这就涉及到端口数据方向寄存器,接下来的输出还是输入操作,只要使用剩下的寄存器就可以了。
说说引脚复用问题吧,还是要扯到51单片机,为什么51单片机(基础型号)没有引脚复用这个概念呢,说白了就是它的功能太简单了,只有GPIO功能……。但是Kinetis系列单片机的引脚大部分都是功能复用的,那么我们怎么控制他选择什么功能,答案就是PORT模块。PORT字面上市端口的意思,然而在参考手册中全程是端口控制和中断模块,还是字面上的意思很容易理解,PORT模块负责端口的复用和其他控制、以及端口的外部中断功能。PORT模块主要用到的寄存器是它的引脚控制寄存器以及中断状态标志寄存器。引脚控制寄存器主要负责引脚复用功能的选择、中断\DMA触发模式的配置、内部上下拉、是否为开漏等功能。中断状态标志寄存器主要用来判断到底是哪个引脚产生了外部中断。
使用GPIO固件库编程思路:相信不少人已经使用过库了,比如STM32的库等,飞思卡尔最近也推出了自己的库函数,前面我们知道了GPIO具有输入、输出逻辑电平的功能,配合PORT模块的使用,还可以作为外部中断使用。所以根据功能来推理编程思路,就十分简单了:输入功能:初始化GPIO相关引脚为输入—>读取引脚电平状态;输出功能:初始化GPIO相关引脚为输出—>输出电平;外部中断功能:初始化GPIO相关引脚为输入并配置中断—>中断函数,具体到固件库的编程上,顺序是一样的,首先我们要调用GPIO模块的初始化库函数,对GPIO进行初始化,然后就可以根据不同功能进行使用了。 |