SOC OV788开发:10.uart 中断接收 以及usb启动模式

本文介绍了SOCOV788开发中的UART串口中断接收功能实现,以及如何通过USB进入调试模式。详细探讨了中断处理函数的分配,并展示了如何处理UART数据命令。同时涵盖了USB启动模式的相关代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SOC OV788开发:10.uart 中断接收 以及usb启动模式

IRQ_HANDLER_DECLARE_START

IRQ_MAP(UART, uart_irq_handler);

#if defined(CONFIG_WIFIMODULE_BRCM4334X) || defined(CONFIG_WIFIMODULE_RTL8195A)

extern void app_scio_irq_handler_1(void);

#ifdef CONFIG_WIFIMODULE_USE_SCIO1

IRQ_MAP(SCIF1, app_scio_irq_handler_1);

#else

IRQ_MAP(SCIF2, app_scio_irq_handler_1);

#endif

#endif

IRQ_MAP(VP, vp_irq_handler);

IRQ_MAP(EOF, eof_intr_process);

IRQ_MAP(VSYNC, vsync_irq_handler);

IRQ_MAP(GPIO, gpio_irq_handler);

#ifdef CONFIG_MIMG_EN

IRQ_MAP(IMG, mimg_irq_handler);

#endif

#ifdef CONFIG_SCIF_USE_INTR

#ifdef CONFIG_APP_USE_SCIF02

IRQ_MAP(SCIF2, app_scif_irq_handler);

#else

IRQ_MAP(SCIF1, app_scif_irq_handler);

#endif

#endif

IRQ_HANDLER_DECLARE_END

static void uart_irq_handler(void)

{

static unsigned char uart_buf[128] = {0};

static int uart_count = 0;

while(1)

{

​ int ch = uart_testgetc();

​ if(ch == -1)

​ break;

​ uart_buf[uart_count++] = ch;

​ if(uart_count >= 128)

​ {

​ memset(uart_buf, 0, sizeof(uart_buf));

​ uart_count= 0;

​ break;

​ }

​ if(ch != ‘\r’ && ch != ‘\n’)

​ uart_putc(ch);

​ else

​ {

​ uart_putc(’\r’);

​ uart_putc(’\n’);

​ while((uart_count >= 1) && (uart_buf[–uart_count] == ‘\r’ || uart_buf[–uart_count] == ‘\n’))

​ uart_buf[uart_count] = ‘\0’;

handle_uart_data_cmd(uart_buf);

​ memset(uart_buf, 0, sizeof(uart_buf));

​ uart_count= 0;

​ }

}

}

static void board_usb_boot(void)

{

debug_printf(“Enter usb debug mode\n”);

disable_cache();

PADCLKSET;

usbdbg_en();

while(1);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空胆好小

您的鼓励已签收,我会继续快马加

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值