完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想使用 UART RX 信号来触发 ERU 函数。 代码如下所示
这适用于 UART1 P2.0 和 P2.1 const XMC_GPIO_CONFIG_t CYBSP_DEBUG_UART_TX_config = { .mode = (XMC_GPIO_MODE_t)CYBSP_DEBUG_UART_TX_MODE, .output_level = XMC_GPIO_OUTPUT_LEVEL_LOW,};const XMC_GPIO_CONFIG_t CYBSP_DEBUG_UART_RX_config = { .mode = (XMC_GPIO_MODE_t)CYBSP_DEBUG_UART_RX_MODE, .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD,}; XMC_UART_CH_InitEx(XMC_UART0_CH0, CYBSP_DEBUG_UART_config, true); XMC_UART_CH_SetinputSource(XMC_UART0_CH0, (XMC_UART_CH_INPUT_t)XMC_USIC_CH_INPUT_DX0, 4); XMC_UART_CH_SetSamplePoint(XMC_UART0_CH0, 8U); XMC_USIC_CH_SetInterruptNodePointer(XMC_UART0_CH0, XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, 0U); XMC_UART_CH_EnableEvent(XMC_UART0_CH0, XMC_UART_CH_EVENT_STANDARD_RECEIVE); XMC_GPIO_Init(XMC_GPIO_PORT2, 1, CYBSP_DEBUG_UART_TX_config); XMC_GPIO_SetHardwareControl(XMC_GPIO_PORT2, 1, XMC_GPIO_HWCTRL_DISABLED); XMC_GPIO_Init(XMC_GPIO_PORT2, 0, CYBSP_DEBUG_UART_RX_config); XMC_GPIO_SetHardwareControl(XMC_GPIO_PORT2, 0, XMC_GPIO_HWCTRL_DISABLED); NVIC_SetPriority((IRQn_Type)IRQ9_IRQn, 3); NVIC_EnableIRQ((IRQn_Type)IRQ9_IRQn); NVIC_ClearPendingIRQ(IRQ9_IRQn); 请查看数据表,P2.0 是 ERU0.0B0 所以这是我的 ERU 设置。 const XMC_ERU_ETL_CONFIG_t button_event_generator_config = { .input_b = XMC_ERU_ETL_INPUT_B0, .enable_output_trigger = 1, .output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL0, .status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_SWCTRL, .source = XMC_ERU_ETL_SOURCE_B, .edge_detection = XMC_ERU_ETL_EDGE_DETECTION_FALLING,};const XMC_ERU_OGU_CONFIG_t button_event_detection_config = { .enable_pattern_detection = 1, .service_request = XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER_AND_PATTERN_MATCH, .pattern_detection_input = XMC_ERU_OGU_PATTERN_DETECTION_INPUT0,};void ERU_Init(void){XMC_ERU_ETL_Init(ERU0_ETL0, button_event_generator_config);XMC_ERU_OGU_Init(ERU0_OGU0, button_event_detection_config); NVIC_SetPriority(IRQ3_IRQn,NVIC_EncodePriority(NVIC_GetPriorityGrouping(),3, 192)); NVIC_EnableIRQ(IRQ3_IRQn); }void ERU_IRQHandler(void){XMC_ERU_ETL_ClearStatusFlag(ERU0_ETL0);} 从 RX 接收到的数据确实进入了 ERU,但是为什么 UART TX 会针对每个数据触发 ERU 中断一次? 我的设置有什么问题吗? |
|
相关推荐
1个回答
|
|
UART TX 信号每触发一次 ERU 中断,是因为在每次发送数据时,UART 会产生一个 TX 指示信号,用于表示数据正在发送。
相比之下,UART RX 端口不会像 TX 端口一样产生单独的触发信号。而是当接收到数据时,会通过 RX 端口的中断来触发 ERU 函数。 所以,如果你想使用 UART RX 信号来触发 ERU 函数,你需要在接收到数据时,通过 RX 端口的中断来调用 ERU 函数。在中断处理函数中,你可以检查接收到的数据,并根据需要执行相应的操作。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 08:17 , Processed in 0.590766 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号