完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
实验二
实验目标:利用遥感开关往不同方向按下时在LCD显示屏分别显示表示方向的箭头。 实验原理: (1)GPIO:K60的I/O口具有多功能信号复用、DMA或中断触发控制以及GPIO功能。 GPIO是单片机同外围设备数据传输的通道。单片机的大部分I/O口方向寄存器来配置成为输入或者输出功能。I/O作为输入使用时,可以对输入的信号进行检测,根据输入信号的电压大小,单片机可以将相应的电压信号转化为逻辑信号。 (2)Joystick:五个按键,包括上下左右和中间的按键,中间的select按键有外部的上拉电阻,其他四个方向键可以自由配置上拉或下拉电阻。当按下按键时相应的GPIO口就能检测到按键状态。 (3)LCD:像素为320X240。 (4)FlexBus: |
|
相关推荐
|
|
知识点1:GPIO配置
(1)引脚控制寄存器:PORTx_PCRn 10-8:引脚复用功能选择:可以配置为GPIO、中断或其他复用功能等,当这三位配置为001时是GPIO功能。 (2)GPIO时钟配置寄存器:SIM_SCGC5 13-9.PORTx:分别使能或禁止端口时钟; (3)GPIO数据方向寄存器:GPIOx_PDDR 31-0.PDD:配置为0则为输入,配置为1则为输出 (4)GPIO数据输入寄存器:GPIOx_PDIR GPIO口会将读入的数据转化为高或低电平。 |
|
|
|
|
|
实验步骤:
1.确定原理图引脚 其中UP按键与PORTA24脚相连,RIGHT按键与PORTA26脚相连,LEFT与PORTA27脚相连,DOWN按键与PORTA25脚相连,SELECT按键与PORTA4脚相连。 |
|
|
|
|
|
2.软件部分
(1)GPIO引脚重命名 //by zsy kGpio_up=GPIO_MAKE_PIN(HW_GPIOA,24U), kGpio_down=GPIO_MAKE_PIN(HW_GPIOA,25U), kGpio_left=GPIO_MAKE_PIN(HW_GPIOA,27U), kGpio_right=GPIO_MAKE_PIN(HW_GPIOA,26U), kGpio_select=GPIO_MAKE_PIN(HW_GPIOA,4U), (2)引脚配置 //by zsy 2015/4/30 const gpio_input_pin_user_config_t upkey[] = { { .pinName = kGpio_up, .config.isPullEnable = true, .config.pullSelect = kPortPullUp, .config.isPassiveFilterEnabled = false, .config.interrupt = kPortIntDisabled, }, // { // .pinName = GPIO_PINS_OUT_OF_RANGE, // } }; 其他GPIO口如downkey、leftkey、rightkey、selectkey相同配置。 (3)使能端口时钟,配置方向与初始化 SIM_HAL_EnablePortClock(SIM_BASE, 0); //initial PORTA clock //initial upkey GPIO_DRV_SetPinDir(kGpio_up,kGpioDigitalInput); // PORT_HAL_SetMuxMode(PORTA_BASE,0x18, kPortMuxAsGpio); GPIO_DRV_InputPinInit(upkey); 其他端口类似配置 (4)LCD配置与初始化 /* Initialize standard SDK demo application pins */ for (i = 0; i < HW_PORT_INSTANCE_COUNT; i++) { CLOCK_SYS_EnablePortClock(i); } lcd_flexbus_init(); CLOCK_SYS_GetFreq(kFlexBusClock,&freq); LCDC_Init(); (5)设置指针指向图片信息,并拷贝图片数据到SDRAM中 //Copy image data to sram for(i=0; i<320*240; i++) { p1 = *((uint16_t *)&gImage_ecbc[j]);; j+=2; } LCDC_Bmp(0,0,320,240,(unsigned short *)p1); //for(i=0;i<1000000;i++); (6)进入主循环,获取按键的信息,分别显示对应的按键图片 while(1) { upkey_value=GPIO_DRV_ReadPinInput(kGpio_up); downkey_value=GPIO_DRV_ReadPinInput(kGpio_down); leftkey_value=GPIO_DRV_ReadPinInput(kGpio_left); rightkey_value=GPIO_DRV_ReadPinInput(kGpio_right); selectkey_value=GPIO_DRV_ReadPinInput(kGpio_select); // if(upkey_value == 0) { //LCDC_Init(); j=0; for(i=0; i<320*240; i++) { p1 = *((uint16_t *)&gImage_up[j]);; j+=2; } LCDC_Bmp(0,0,320,240,(unsigned short *)p1); //for(i=0;i<10000000;i++); for(i=0;i<100;i++); //LCDC_Init(); } |
|
|
|
|
|
楼主这几天很拼啊,是学生放假吗。
|
|
|
|
|
|
零知开源——基于STM32F407VET6零知增强板的四路独立计时器
806 浏览 0 评论
零知开源——STM32F4实现ILI9486显示屏UI界面系列教程(一):电子书阅读器功能
1287 浏览 0 评论
CW32L010 ESC Driver 电机控制套件快速上手指南
1043 浏览 1 评论
1644 浏览 1 评论
1866 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
13576 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-7-4 14:15 , Processed in 1.053304 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191