235|1

2935

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【Follow me第二季第3期】入门任务:2、按键控制LED测试 [复制链接]

 

1、测试介绍

上次测试搭建入门任务VsCode、FSP Smart Configurator、CMAKE、GNU 开发环境搭建成功后,本次测试使用按键控制LED的开关。测试实现GPIO的中断输入。

2、设置过程

首先,使用FSP Smart Configurator创建项目FSP_BUT_LED。

  完成后使用,Stacks->New Stack增加IRQ设置

  关键参数:Name g_external_irq9,Channel 9,Callback user_irq_callback,三个关键设置。

 因为P004使用按键使用IRQ9设置。

完成后生成项目

3、程序代码

只要程序

#define  APP_ERR_TRAP()  __asm("BKPT #0\n")

volatile bool g_sw_press = false;
volatile bool g_led_sw = false;

设置两个变量用来存储,按键状态和过程控制,在void hal_entry (void)中初始化中断设置。

    fsp_err_t err = FSP_SUCCESS;

    err = R_ICU_ExternalIrqOpen(&g_external_irq9_ctrl,&g_external_irq9_cfg);

    if(FSP_SUCCESS != err)
    {

        APP_ERR_TRAP();
    }  

    err = R_ICU_ExternalIrqEnable(&g_external_irq9_ctrl);

    if(FSP_SUCCESS != err)
    {

        APP_ERR_TRAP();
    }

在hal_entry()外增加Callback函数,

void user_irq_callback(external_irq_callback_args_t *p_args)
{

    if(9== p_args->channel)
    {
        g_sw_press = true;
    }

}

只要在hal_entry()循环中检测按键可以控制LED

        uint32_t pin0 = leds.p_leds[0];
        R_BSP_PinWrite((bsp_io_port_pin_t) pin0, pin_level);

        uint32_t pin1 = leds.p_leds[1];
        R_BSP_PinWrite((bsp_io_port_pin_t) pin1, pin_level);

        

        if(g_sw_press)
        {
            g_led_sw = !g_led_sw;
            uint32_t pin2 = leds.p_leds[2];
            if(g_led_sw)
            {
                R_BSP_PinWrite((bsp_io_port_pin_t) pin2, BSP_IO_LEVEL_HIGH);
            }
            else
            {
                R_BSP_PinWrite((bsp_io_port_pin_t) pin2, BSP_IO_LEVEL_LOW);

            }
           
            g_sw_press = false;
        }

debug运行项目,通过按键可以控制RED LED的开关。

4、测试过程

  程序中断

  LED关闭

项目文件 FSP_BUT_LED.zip (927.86 KB, 下载次数: 0)

 

 

 

最新回复

谢谢分享  详情 回复 发表于 2024-11-26 09:56
点赞 关注
 
 

回复
举报

68

帖子

2

TA的资源

一粒金砂(中级)

沙发
 
谢谢分享
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表