查看: 1675|回复: 8

[求助] 求助!关于LPC54114独立按键的一个简单问题,但我实在不清...

[复制链接]
  • TA的每日心情
    开心
    2019-10-28 00:19
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    24
    最后登录
    2019-11-29
    发表于 2019-10-27 13:01:54 | 显示全部楼层 |阅读模式
    1NXP金币
    小白刚拿到一块LPC54114的板子,先写了简单的LED闪烁(LED6),我现在想实现按住PB2也就是位于PIO1_8的按键的时候另外一个灯(LED7)闪烁,各种方法我都试过了,程序跑出来效果是:复位时检测到按下按键LED7闪烁,没检测到的话LED6闪烁,但之后再按按键无法改变LED的闪烁,请问是按键初始化有问题吗?为什么只能在上电的时候检测一次呢?真心求助呀!
    1. #include "board.h"
    2. #include "fsl_gpio.h"

    3. #include "pin_mux.h"
    4. /*******************************************************************************
    5. * Definitions
    6. ******************************************************************************/
    7. #define BOARD_LED_PORT 0U
    8. #define BOARD_LED_PIN7 25U
    9. #define BOARD_LED_PIN6 26U

    10. /*******************************************************************************
    11. * Prototypes
    12. ******************************************************************************/

    13. /*******************************************************************************
    14. * Variables
    15. ******************************************************************************/
    16. volatile uint32_t g_systickCounter;

    17. /*******************************************************************************
    18. * Code
    19. ******************************************************************************/
    20. void SysTick_Handler(void)
    21. {
    22.     if (g_systickCounter != 0U)
    23.     {
    24.         g_systickCounter--;
    25.     }
    26. }

    27. void SysTick_DelayTicks(uint32_t n)
    28. {
    29.     g_systickCounter = n;
    30.     while (g_systickCounter != 0U)
    31.     {
    32.     }
    33. }

    34. /*!
    35. * @brief Main function
    36. */
    37. int main(void)
    38. {
    39.     /* Define the init structure for the output LED pin*/
    40.     gpio_pin_config_t led1_config = {
    41.         kGPIO_DigitalOutput,
    42.         0,
    43.     };
    44.     gpio_pin_config_t led2_config = {
    45.         kGPIO_DigitalOutput,
    46.         0,
    47.     };
    48.     gpio_pin_config_t key_config = {
    49.         kGPIO_DigitalOutput,
    50.         0,
    51.     };
    52.     /* Board pin init */
    53.     BOARD_InitPins();
    54.     BOARD_BootClockFROHF48M();
    55.     BOARD_InitDebugConsole();

    56.     /* Init output LED GPIO. */
    57.     GPIO_PortInit(GPIO, BOARD_LED_PORT);
    58.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN7, &led1_config);
    59.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN6, &led2_config);
    60.     GPIO_PinInit(GPIO, 1U,8U, &key_config);
    61. //   GPIO_PinInit(GPIO, 1U,8U, &led_config);
    62.     /* Set systick reload value to generate 1ms interrupt */
    63.     if (SysTick_Config(SystemCoreClock / 1000U))
    64.     {
    65.         while (1)
    66.         {
    67.         }
    68.     }
    69.     while (1)
    70.     {
    71.             if(GPIO_PinRead(GPIO,1U,8U)!=0U)
    72.             {
    73.                             GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN6);
    74.                             SysTick_DelayTicks(1000U);
    75.             }else
    76.             {
    77.             GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN7);
    78.             SysTick_DelayTicks(1000U);
    79.             }
    80.     }
    81. }
    复制代码

       

    我太难了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-28 00:19
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    24
    最后登录
    2019-11-29
     楼主| 发表于 2019-10-27 14:13:13 | 显示全部楼层
    求助各位大佬啊...真的很需要解决这个问题
    我太难了
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92609
    最后登录
    2024-4-9
    发表于 2019-10-28 21:32:09 | 显示全部楼层
    本帖最后由 stm1024 于 2019-11-1 10:02 编辑

    gpio_pin_config_t key_config = {
            kGPIO_DigitalOutput,
            0,
        }; 01.png 02.png 03.png 04.png 05.png 06.png 07.png 08.png 09.png 10.png
    这个地方是不是应该配置为kGPIO_DigitalInput?
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92609
    最后登录
    2024-4-9
    发表于 2019-10-28 21:32:41 | 显示全部楼层
    还有,最好贴出你的电路原理图,这样大家可能更好帮你排查一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-20 09:11
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    30

    主题

    104

    帖子

    0

    高级会员

    Rank: 4

    积分
    642
    最后登录
    2019-12-2
    发表于 2019-10-30 11:53:11 | 显示全部楼层
    按键应该配置为输入
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5376
    最后登录
    2021-12-22
    发表于 2019-10-30 21:31:16 | 显示全部楼层
    gpio_pin_config_t key_config = {
            kGPIO_DigitalOutput,
            0,

    key 和 led  IO不一样
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    97

    主题

    836

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3967
    最后登录
    2024-4-16
    发表于 2019-10-31 13:04:58 | 显示全部楼层
        gpio_pin_config_t key_config = {
            kGPIO_DigitalOutput,
            0,
        };

    这里应该改为
        gpio_pin_config_t key_config = {
            kGPIO_DigitalInput,
            0,
        };
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-28 00:19
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    24
    最后登录
    2019-11-29
     楼主| 发表于 2019-11-3 23:08:01 | 显示全部楼层
    嗯嗯 我也觉得我没注意到这里,但是我改了程序,还是没办法实现读取键盘输入
    1. #include "board.h"
    2. #include "fsl_gpio.h"

    3. #include "pin_mux.h"
    4. /*******************************************************************************
    5. * Definitions
    6. ******************************************************************************/
    7. #define BOARD_LED_PORT 0U
    8. #define BOARD_KEY_PORT 1U
    9. #define BOARD_LED_PIN7 25U
    10. #define BOARD_LED_PIN6 26U
    11. #define BOARD_KEY_PIN0 8U

    12. /*******************************************************************************
    13. * Prototypes
    14. ******************************************************************************/

    15. /*******************************************************************************
    16. * Variables
    17. ******************************************************************************/
    18. volatile uint32_t g_systickCounter;

    19. /*******************************************************************************
    20. * Code
    21. ******************************************************************************/
    22. void SysTick_Handler(void)
    23. {
    24.     if (g_systickCounter != 0U)
    25.     {
    26.         g_systickCounter--;
    27.     }
    28. }

    29. void SysTick_DelayTicks(uint32_t n)
    30. {
    31.     g_systickCounter = n;
    32.     while (g_systickCounter != 0U)
    33.     {
    34.     }
    35. }

    36. /*!
    37. * @brief Main function
    38. */
    39. int main(void)
    40. {
    41.     /* Define the init structure for the output LED pin*/
    42.     gpio_pin_config_t led1_config = {
    43.         kGPIO_DigitalOutput,
    44.         0,
    45.     };
    46.     gpio_pin_config_t led2_config = {
    47.         kGPIO_DigitalOutput,
    48.         0,
    49.     };
    50.     gpio_pin_config_t config =
    51.     {
    52.             kGPIO_DigitalInput,
    53.                 0,
    54.     };

    55.     BOARD_InitPins();
    56.     BOARD_BootClockFROHF48M();
    57.     BOARD_InitDebugConsole();

    58.     GPIO_PortInit(GPIO, BOARD_LED_PORT);
    59.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN7, &led1_config);
    60.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN6, &led2_config);
    61.     GPIO_PinInit(GPIO, BOARD_KEY_PORT,BOARD_KEY_PIN0, &config);

    62.     if (SysTick_Config(SystemCoreClock / 1000U))
    63.     {
    64.         while (1)
    65.         {
    66.         }
    67.     }
    68.     while (1)
    69.     {
    70.             if(GPIO_PinRead(GPIO,BOARD_KEY_PORT,BOARD_KEY_PIN0)==0)
    71.             {
    72.                     SysTick_DelayTicks(20U);
    73.                 if(GPIO_PinRead(GPIO,BOARD_KEY_PORT,BOARD_KEY_PIN0)==0)
    74.                 {
    75.                     GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN6);
    76.                 }
    77.             }
    78.     }
    79. }
    复制代码
    我太难了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-28 00:19
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    24
    最后登录
    2019-11-29
     楼主| 发表于 2019-11-3 23:13:54 | 显示全部楼层
    本帖最后由 kendricklamar 于 2019-11-3 23:43 编辑


    我太难了
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-20 08:30 , Processed in 0.149277 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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