在C:\ti\pdk_C6657_1_1_2_6\packages\ti\platform\evmc6657l\platform_test示例代码的测试中,其他函数都是成功的。但是在uart这边卡住了。 我在超级终端按照他的指示连上正确的波特率以后能够接收到来自板子的信息:This is a Platform UART API unit test … 可是当我去尝试跟他交互的时候,他完全不给我反应, 进入函数仔细阅读以后发现 这句话:
uRcvChar = CSL_FEXT(hUartRegs_B->RBR, UART_RBR_DATA);
中的UART_RBR_DATA是找不到定义的,所以我觉得问题出在这里,但是我找了好久都没有发现相关的文件夹中有关于这个变量的申明或者定义。
求技术人员指导帮助,谢谢。
noaming:
你好,编译的时候能通过吗?
CSL_FEXT(hUartRegs_B->RBR, UART_RBR_DATA);是一个宏定义,单步运行,看uRcvChar的值是多少?
Allen Lee2:
回复 noaming:
源代码是这样的,
uint8_t UartReadData(void){ uint8_t uRcvChar = 0; uRcvChar = CSL_FEXT(hUartRegs->RBR, UART_RBR_DATA);
return uRcvChar; }
那个uRcvChar的值被定义成局部常量0;
这个对UART_RBR_DATA不会产生影响吧应该?
我是找不到UART_RBR_DATA它的定义额。所以不知道该怎么办。
Allen Lee2:
回复 noaming:
编译是通过没问题的。而且都能够load进去。只是不能通过终端跟板子连动起来。
Allen Lee2:
回复 noaming:
#define CSL_FEXT(reg, PER_REG_FIELD) \ (((reg) & CSL_##PER_REG_FIELD##_MASK) >> CSL_##PER_REG_FIELD##_SHIFT)
我看不明白这个宏定义的意思。
求指教
Andy Yin1:
回复 Allen Lee2:
CSL_FEXT是用于获取寄存器中每一个位段的数值,如上实现所述先与上mask将指定位段以外的值清零,然后将指定位段的数移到最低bit。
UART与PC的通信例程:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx