2、ARM嵌入式系统:按键 初始化

LED 三色灯初始化完后,紧接着就开始初始化8个按键了。4个方向键+4个功能键。8个按键在板子的哪个地方呢?如下图所示:

8个按键的初始化函数入口为:void KEY_Init()。

按键涉及的寄存器在原理图(2_电路原理图_Blazar实验板.pdf)上有列出来,红色的部分:

整个初始化流程代码如下:

step1:使能8个按键的时钟,即打开porta的时钟配置

PORTA为SCGC5寄存器的第9bit,那么把这个寄存器的第9bit设置为1即可。不得不说,工具把对芯片的寄存器操作全部封装成对应的宏,使用很方便,不像在公司做项目时这些底层操作都要一个个自己写。

SIM_SCGC5|=SIM_SCGC5_PORTA_MASK;

step2:将8个按键的引脚配置为GPIO,使能8个按键的中断

    // step2:从2_电路原理图_Blazar实验板 图中的按键图,可以看到8个按键由PTA控制

    /*porta SW1,SW2,SW3,SW4 set to GPIO,raising edge interrupt,no pull enable,passive filter enable*/     PORTA_PCR1=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;    PORTA_PCR12=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;                PORTA_PCR5=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;    PORTA_PCR13=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;       

    /*portA SW5,SW6,SW7,SW8 set to GPIO,raising edge interrupt,no pull enable,passive filter enable*/    PORTA_PCR14=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;        PORTA_PCR16=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;        PORTA_PCR17=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;        PORTA_PCR15=PORT_PCR_MUX(0X1)+PORT_PCR_IRQC(0X0A)+PORT_PCR_PE_MASK+PORT_PCR_PS_MASK;    

 

1)引脚控制配置为GPIO,即将MUX设置为1

 2)打开中断,在下降沿时触发中断,即设置IRQC为0X1010即0XA

 3)启用上拉电阻,即将PE和PS位设置为1

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>