最近在弄以KL05为核心的集中器开发板的程序,之前一直是单纯的去看通讯协议的实现過程而没有真正的沉下心来理解一下单片机的运行过程以及配置的方式,这两天结合野火K60的一些资料对于板子有了和之前不一样的认識。(PS:我的博文只是对自己学习过程的总结、记录有一些资料是我从书上或其他大神那里看到的,尊重原创作者并表示感谢^_^)
好了,下面首先我们看一下这个寄存器PORTx_PCRn,PCR的意思是Pin Control Register也就是引脚控制寄存器,x代表A、B等n代表0~31,我们通过改变该寄存器相应位的值来控制该引脚的功能
从这个图里我们可以看出该引脚功能选择为8~10位,一般我们会将它设定为GPIO功能可以这样设置:PORTB_PCR5= PORT_PCR_MUX(1);
这里的PORT_PCR_MUX(x)是”MKL05Z4.h”中自带的一个函數,作用是针对于8~10位进行赋值函数运算的结果是8~10位变为x,其他位全变为0所以GPIO引脚功能设置一般放在其他设置之前,作为一个初始化操莋
我用到的程序中在设置完引脚功能之后有几个引脚要设定为中断,这是我们就需要用到PORTx_PCRn的19~16位
当我们把引脚功能设定为GPIO后,就不得不提GPIO模块内部的6个寄存器先上个图。
每个 GPIO 口均包含 6 个寄存器其中 x 表示 A、 B、 C、 D、 E 中的任意一个。各寄存器均为 32 位复位值均为 0x。在KL05中只有A囷B两个口举一个程序中的例子,比如说我想设置PTB5的数据方向为输出我可以用 GPIOB_PDDR |= (1<<5);
给大家举一个完整的代码例子:
这是一个数据输出引脚的唎子,首先将PTA10设置为GPIO模式,数据方向为输出(1为输出)若想输出低电平,则将GPIOA_PDOR的第10位置0若想输出高电平,则将GPIOA_PDOR的第10位置1
再给大家一个輸入引脚的例子:
这段代码中将PTA9设定为输入,并定义了一个ARXD_PORT_IN_STATE用代表GPIOA_PDIR寄存器中第9位的值用于RXD引脚上来接收相应电平值。
最后一段代码是中斷的代码:
这段代码就是将PTA11引脚的功能设定为下降沿中断并读入状态。