Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

CC2540,BLE协议栈程序从1.21升级到1.3后,串口DMA部分问题请教。 dmaCfg.rxTail总是小与dmaCfg.rxHead,少1或少2

$
0
0

           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谢谢


Viewing all articles
Browse latest Browse all 7485

Trending Articles