hi 你好
我在使用DA14585的ble_app_peripheral开发串口接收功能,在广播时或者广播结束时,当串口有数据时进行接收,如果没有数据继续进行下一次广播。
我在广播中添加了串口接收uart_receive()函数进行接收,如果时刻保持有数据接收,程序可以正常运行,但是当串口没有数据时程序出现MOVS r0 r0 的错误,我该怎么避免
你好,
关于你描述的应用场景,我有几点疑问:
1. 这个项目想实现什么功能,585 在这个项目中的功能是什么?
2. uart_receive() 函数的功能是使能串口接收,有几种方式:阻塞(block),中断(interrupt),DMA。你采用的是什么方式
3. 是否要实现通过广播的方式,将串口接收到的数据发送出去?
您好,谢谢您的回复
1 项目实现通过接收串口数据然后修改相应的广播数据等信息,585的功能作为从机进行无定向的广播
2目前使用的是分割(块)
3 是的,通过广播将串口接收到的数据加入到广播数据中广播出来,这部分我已实现,就是在调用串口接收时如果我没有立即输入数据程序会停止运行。我怀疑是串口接收的过程中进入了扩展睡眠模式,导致外围电源关闭,之后我关闭了睡眠模式的定义arch_ SLEEP_ OFF,但是仍然有上述问题存在,是否是分割模式无法使用在广播模式中?
使用block(阻塞)的方式进行串口数据的接收时,程序会死等在一个地方,等待数据的接收完成。
这个会破坏系统的实时性,导致系统可能因为触发看门狗,无法响应蓝牙事件,消息队列爆掉而死机。
当等待的时间比较长时,建议应该采用中断,或者DMA的方式进行数据的接收,可参考SDK 中的 uart 例程的实现方式。
Br,Yibin
你好,
关于你描述的应用场景,我有几点疑问:
1. 这个项目想实现什么功能,585 在这个项目中的功能是什么?
2. uart_receive() 函数的功能是使能串口接收,有几种方式:阻塞(block),中断(interrupt),DMA。你采用的是什么方式
3. 是否要实现通过广播的方式,将串口接收到的数据发送出去?
您好,谢谢您的回复
1 项目实现通过接收串口数据然后修改相应的广播数据等信息,585的功能作为从机进行无定向的广播
2目前使用的是分割(块)
3 是的,通过广播将串口接收到的数据加入到广播数据中广播出来,这部分我已实现,就是在调用串口接收时如果我没有立即输入数据程序会停止运行。我怀疑是串口接收的过程中进入了扩展睡眠模式,导致外围电源关闭,之后我关闭了睡眠模式的定义arch_ SLEEP_ OFF,但是仍然有上述问题存在,是否是分割模式无法使用在广播模式中?
你好,
使用block(阻塞)的方式进行串口数据的接收时,程序会死等在一个地方,等待数据的接收完成。
这个会破坏系统的实时性,导致系统可能因为触发看门狗,无法响应蓝牙事件,消息队列爆掉而死机。
当等待的时间比较长时,建议应该采用中断,或者DMA的方式进行数据的接收,可参考SDK 中的 uart 例程的实现方式。
Br,Yibin