我想使用 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条
1/1 1 跳转至页
使用UARTRX信号来触发ERU函数,为什么UARTTX会针对每个数据触发ERU中断一次?

关键词: UART 中断
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 |