跳到主要内容

UART2处理程序循环

DA14585.

4年前

UART2处理程序循环

张贴了Eric Sc​​ammell.0分 2回复
0旋转

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

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

接受答案!

4年前

mt_dialog. -30点

嗨埃里克,

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

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

谢谢mt_dialog.

4年前

Eric Sc​​ammell. 0分

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

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

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

感谢您的帮助。