RA生态之外部中断EXIT

本文展示了如何使用外部中断和按键控制LED灯的状态。通过配置R_ICU_ExternalIrqOpen函数实现外部中断接口,并在中断回调函数中切换LED灯的亮灭。同时,利用串口重定向进行通信反馈,确保按键操作被正确处理。
摘要由CSDN通过智能技术生成

实现:通过按键形式以及灯的亮灭形式进行演示

EXIT 配置

Stacks->New Stack->Input -> External IRQ Driver on r_icu

R_ICU_ExternalIrqOpen()函数:配置用于外部中断接口的 IRQ 输入引脚,配置如下所示。

/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq7_ctrl,&g_external_irq7_cfg);
assert(FSP_SUCCESS == err);

 例程:

#include "hal_data.h"
#include <stdio.h>

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER
fsp_err_t err = FSP_SUCCESS;
/******************************************************************/
/*串口重定向*/
volatile bool uart_send_complete_flag = false;
int fputc(int ch, FILE *f)
{
    err = R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
    if(FSP_SUCCESS != err) __BKPT();
    while(uart_send_complete_flag == false){}
    uart_send_complete_flag = false;
    return 0;
}
/*串口回调函数*/
void user_uart_callback (uart_callback_args_t * p_args)
{
    if(p_args->event == UART_EVENT_TX_COMPLETE)
    {
        uart_send_complete_flag = true;
    }
}
/******************************************************************/
/*外部中断回调函数*/
bsp_io_level_t level = BSP_IO_LEVEL_LOW;
void exit0_callback(external_irq_callback_args_t *p_args)
{
    (void) p_args;
    if(level) R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
    else R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
    level=~ level;
}
void hal_entry(void)
{
        /*外部中断初始化用的外部中断0的3通道*/
        err = R_ICU_ExternalIrqOpen(&g_external_irq0_ctrl, &g_external_irq0_cfg);
        assert(FSP_SUCCESS == err);
        /*使能外部中断*/
        err = R_ICU_ExternalIrqEnable(&g_external_irq0_ctrl);
        assert(FSP_SUCCESS == err);
        while(1)
        {
            R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
        }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

 把P206当成一个触摸按键,碰一下LED就改变状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值