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
4、ARM嵌入式系统:蜂鸣器 初始化_cyf31的专栏-CSDN博客
版权声明:本文为CSDN博主「cyf31」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cyf31/article/details/122693907
暂无评论