CC2540MINIDK,串口代码在1.21下运行正常,没开流控制。协议栈代码从1.21升级到1.3.升级完了后,编译时,出现警告:“Warning[w52]: More than one definition for the byte at address 0x6b in common segment INTVEC. It is defined in module "hal_uart" as well as in module "hal_key" ”。经过跟踪,发现是P0端口中断向量0X6B重定义了,HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR)和按键的一个中断冲突了。#define DMA_PM 0,就没有警告了。
串口函数接收的时候,如果是单步调试情况下,串口接收正确,dmaCfg.rxTail和接收字节数一样。rxBuf里接收字节正确。
但是运行程序时,发送10个字节数据给2540串口,dmaCfg.rxTail变为0x09,rxBuf里接收10个字节正确。uint16 cnt = tail - dmaCfg.rxHead;cnt为9.
读取完字节后,因为是10个字节,dmaCfg.rxHead变为0x0A.接着往后轮询,dmaCfg.rxHead就一直比dmaCfg.rxTail大1,cnt减后就变为了65535,然后整个串口接收就一直轮询时错误,一直调用回调函数。
恳请工程师指点一下,我哪里操作错误了,需要修改什么地方?O(∩_∩)O谢谢