目的:使用五向按键控制液晶屏显示不同的图片内容
基本的硬件连接
1.首先介绍一下五向按键的硬件连接方式
五向按键是通过连接了一个下拉电阻接到了地,在配置MCU是需要将GPIO配置为上拉模式这样是GPIO采集到的信号更准确。
2.液晶屏是通过FLEXBUS连接到MCU的。
软件的配置方法
简要介绍一下软件的配置方法,首先MCU的给个引脚都是复用的方式,并且还有中断和GPIO,在这里我们是将引脚配置成了GPIO模式再读取IO的值进行判断按键是否有按下。
在使用GPIO时要配置一下寄存器
- I/O模块时钟配置寄存器SCGC5[PORTx]
- I/O的控制与中断寄存器PORTx
- I/O控制寄存器n PORTx_PCRn
- GPIO输入数据寄存器GPIOx_PDIR
- GPIO设置方向寄存器GPIOx_PDDR
官方给出的库函数中可以有两个层面的选择,一个是HAL层,另一个是Driver层配置,
简单的理解HAL层的函数更贴近硬件函数简单功能单一,Driver层函数相对复杂,功能强大。
在本次实例中使用的是HAL层的函数配置的GPIO
- 使用SIM_HAL_EnablePortClock使能对应硬件的端口
- 使用PORT_HAL_SetMuxMode将引脚配置成GPIO模式
- 使用GPIO_HAL_SetPinDir再将对应的引脚配置成输入模式
- 使用PORT_HAL_SetPullCmd使能上下拉电阻模式
- 使用PORT_HAL_SetPullMode配置上拉电阻模式
这样就配置好了GPIO的基本模式
接下来就可以使用GPIO_HAL_ReadPinInput读取引脚的值,
按键程序中还要添加消抖,和松手检测,这样才算是一个相对完整的按键程序,同时也提高了按键程序的稳定性。
另外LCD的显示比较复杂今天这里就不做介绍了
官方给出的库函数中给出了显示用的函数可以直接调用,简要介绍一下图片在LCD上的显示原理,图片在程序中是以数组的形式存在的,显示的时候是将数组中的每个像素点的值读出送给显示控制器,在屏幕上显示一个像素点,逐行逐列的显示就实现了一个画面,图片到数组的转化需要一些小工具,例如:Image2Lcd
将图片到工具中转化为数组添加到程序中,使用的时候直接调用就可以了,
我在这个例程中使用的是
初始化 显示 hello world
中间的按键显示ECBC 各个方向键显示各个方向的箭头。
下面是显示的照片。
初始化
中间按键
方向按键上
方向按键下
方向按键左
方向按键右
|