3、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

4、ARM嵌入式系统:蜂鸣器 初始化_cyf31的专栏-CSDN博客

版权声明:本文为CSDN博主「cyf31」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cyf31/article/details/122693907

生成海报
点赞 0

cyf31

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STM32基于HAL库的DS18B20实现

开发板:野火挑战者_V2 GPIO:PE2 创建工程 使能USART1 用来通过串口打印温度值 配置GPIO 代码编写 我们先打开 DS18B20 的手册 1、DS18B20 复位与存在脉冲 复位 /*

MDK 分散加载文件剖析(一)

1、何为分散加载? 1.1 简介 分散加载就是我们开发者能指定你的 代码 或者 数据变量 到指定的内存空间中运行。通知链接器把程序的某一部分连接在存储器的某个地址空间,我们可以通过编写一个分散加载文件来指定 ARM

AD9361基础知识

AD9361 由 Analog Devices 公司设计并产出,该器件集成了相当多的滤波器,频率合成器,数字处理模块以及接收端自动增益控制模块等。拥有上千个寄存器可供配置,通过对寄存器存入

stm32——4、中断exti

这里是基于正点原子开发板的学习记录。 首先你要加入固件库 stm32f10x_exti.h 和 stm32f10x_exti.c 1、STM32中每个io口都可以作为外部中断的中断输入口。 2、STM32F103的中断控制器支持19个外部中断/