查看: 3572|回复: 4

[求助] MAPS四色板开发平台K64之神奇的摇杆

[复制链接]

该用户从未签到

11

主题

54

帖子

0

注册会员

Rank: 2

积分
123
最后登录
2018-5-8
发表于 2015-7-15 17:21:28 | 显示全部楼层 |阅读模式
来自 ECBC_zhy

接着上次的《神奇的LED灯》,再来一发《神奇的摇杆》,很多人被这题目深深地折服了,哈哈~

言归正传,第二个小程序。

实验二:用四色板的的摇杆键(上、下、左、右、选中5个键)控制显示屏输出相应指示图片,比如按摇杆的左键,图片显示向左。

实验准备:四色板(MCU主板和外设板),安装好的IAR,烧录并安装好Jlink驱动,串口调试助手Putty,Image2LCD.exe程序;

飞思卡尔四色板MAPS K64之神奇的摇杆1.png

首先从网上下载所需的图片,包括上、下、左、右、中5幅图像,另外额外下载了一幅美女图片,用于初始化LCD显示,裁剪成320*240大小,因为板子上的屏幕是这么大的,尺寸不对,图像容易有拉伸,用Image2LCD.exe程序转化为能够被直接调用显示的数组,并保存到pic.h中,如下图所示:

飞思卡尔四色板MAPS K64之神奇的摇杆2.png

硬件不需要另外飞线或配置,具体引脚号如下图:

飞思卡尔四色板MAPS K64之神奇的摇杆3.png

飞思卡尔四色板MAPS K64之神奇的摇杆4.png


最重要的就是配置某引脚为GPIO口,这边我们吃了很多亏,我这边是HAL层和Driver层混用的,当然也可以全部用HAL层的函数来配置,一定要注意传入的地址没有错,引脚宏定义无误。kGpioSELECT = GPIO_MAKE_PIN(HW_GPIOA,4U),这是在头文件中对引脚的宏定义,即对portA的4脚定义,其他引脚相同;

  1. SIM_HAL_EnablePortClock(SIM_BASE, 0x00);

  2. GPIO_DRV_SetPinDir(kGpioSELECT, kGpioDigitalInput);

  3. PORT_HAL_SetMuxMode(PORTA_BASE, kGpioSELECT, kPortMuxAsGpio);

  4. GPIO_DRV_InputPinInit(selectPin);
复制代码

传入Driver层引脚初始化函数的具体配置如下:

  1. //selectPin Struct

  2. const gpio_input_pin_user_config_t selectPin[] = {

  3. {

  4. .pinName = kGpioSELECT,

  5. .config.isPullEnable = true,

  6. .config.pullSelect = kPortPullUp,

  7. .config.isPassiveFilterEnabled = false,

  8. .config.interrupt = kPortIntDisabled,

  9. },

  10. {

  11. .pinName = GPIO_PINS_OUT_OF_RANGE,

  12. }

  13. };
复制代码

基本程序流程如下:

1、LCD_FlexBus初始化,LCD初始化,这里LCD显示需要通过FlexBus,所以也要初始化;

2、配置5个摇杆按键——上、下、左、右、选中,配置为上拉的GPIO口;

3、LCD显示初始化,初始化显示一张美女图片,PS:这真不是我女朋友,呵呵~

飞思卡尔四色板MAPS K64之神奇的摇杆5.jpg


4、while循环,这是主循环,一直判断键值,

  1. keyValue=GPIO_DRV_ReadPinInput(kGpioSELECT);//读选中键的键值,没按下为高电平,按下后为低电平

  2. if(keyValue==0)   //如何该键按下

  3. {

  4. //OSA_TimeDelay(50); //delay 50ms      //消抖动

  5. keyValue=GPIO_DRV_ReadPinInput(kGpioSELECT);    //再次读取选中键的键值

  6. if(keyValue==0)       //仍然被按下

  7. {

  8. for(i=0; i<320*240; i++)         

  9. {

  10. p1[i] = *((uint16_t *)&gImage_select[j]);;            //按下选中键显示的图像指针

  11. j+=2;

  12. }

  13. LCDC_Bmp(0,0,320,240,(unsigned short *)p1);      //显示对应键值的图像

  14. //for(i=0;i<10000000;i++);

  15. keyValue=1;                                     //清键值

  16. j=0;                                                  //清图像指针增量

  17. }

  18. }   
复制代码

最后上几张调试结果图,duang~duang~

飞思卡尔四色板MAPS K64之神奇的摇杆6.jpg

飞思卡尔四色板MAPS K64之神奇的摇杆7.jpg

飞思卡尔四色板MAPS K64之神奇的摇杆8.jpg

飞思卡尔四色板MAPS K64之神奇的摇杆9.jpg

飞思卡尔四色板MAPS K64之神奇的摇杆10.jpg

我知道答案 目前已有4人回答

评分

参与人数 1NXP金币 +30 收起 理由
小七 + 30 打赏!

查看全部评分

回复

使用道具 举报

  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
    发表于 2015-7-15 20:55:44 | 显示全部楼层
    原来 那是个摇杆啊!!
    捕获.PNG
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16855
    最后登录
    1970-1-1
    发表于 2015-7-15 21:32:32 | 显示全部楼层
    学习了,
    回复

    使用道具 举报

    该用户从未签到

    11

    主题

    101

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    303
    最后登录
    2021-11-15
    发表于 2015-7-16 09:28:41 | 显示全部楼层
    楼主,想问一下你的这块板网口好使不,能运行LwIP demo么。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13258
    最后登录
    2019-1-27
    发表于 2015-7-16 14:13:50 | 显示全部楼层
    jinyi7016 发表于 2015-7-15 20:55
    原来 那是个摇杆啊!!

    哈哈~ 涨姿势了哇~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-2 09:15 , Processed in 0.104431 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表