UART2处理程序循环

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
3个帖子/ 0新
最后一篇
Eric Sc​​ammell.
离线
最后一次露面:2年11个月前
加入:2017-03-15 13:28
UART2处理程序循环

我正在尝试使用CFG_Printf定义在我的项目中启用串行输出,但它导致我的程序进入UART2_Handler函数中的无限循环。
踩通过代码我可以看到从UART2_IIR_FCR_REG寄存器读取的“IDD”值为0x7,数据表告诉我是一个保留值。交换机语句没有该值的处理程序,并且在返回后立即再次调用该函数。这将继续直到看门狗过期,并且每次使用cfg_printf运行我的程序时初始化在初始化期间发生(具体而言,它会在UART2_INIT函数中的UART2.C的第295行发生)。

你能给我一个深入了解我可能所做的事情来生成这个错误吗?

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2015-06-08 11:34
嗨埃里克,

嗨埃里克,

你能告诉我你的项目是基于哪个示例吗?除了定义CFG_PRINTF,您是否在项目的UART部分上有任何其他配置?

我正在尝试通过打印某些数据在BLE_APP_Peripheral示例上复制这一点(定义了CFG_PRINTF,并通过在我的项目中包含ARCH_CONSOLE.H文件而调用ARCH_PRINTF()函数),并且我无法获得所提到的内容。0x07 IID未保留,是一个中断,指示忙检测,这意味着UART正在运行,并且您正在尝试通过更改LCR寄存器的值来配置它。

谢谢mt_dialog.

Eric Sc​​ammell.
离线
最后一次露面:2年11个月前
加入:2017-03-15 13:28
嗨MT,

嗨MT,
我认为我的项目是基于empty_peripheral_template,但现在是一瞬间。
我没有用UART系统做任何其他事情。我甚至没有打印任何东西。

我对IID的含义的错误,我不知道我从哪里得到了这个想法。

然而,在键入此评论的过程中,我发现了解决方案。
事实证明,UART正在配置两次,因为PeripH_Init正在由System_Init和我自己的app_on_init处理程序直接调用。

感谢您的帮助。