⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
理解问题

你好,

我想打印出1000次的东西

for(int i = 0; i <= 1000; i ++){
UART_WRITE(“A”,16,NULL);}

但它只在UART中打印它的一部分,然后它将停止......

如果我从主机收到某些东西,我将附在DSP设备中的附件:

int user_sps_server_data_rx_ind_handler(ke_msg_id_t const msgid,
struct sps_server_data_rx_ind const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
for(int i = 0; i <= 1000; i ++){
UART_WRITE(“A”,16,NULL);}
user_ble_push((uint8_t *)param->数据,param->长度);

return(ke_msg_consumed);
}

我碰到了一堵墙:-)

也许有人可以告诉我的方式:-)

设备:
JK_DIALOG.
离线
最后一次露面:2个月3天前
职员
加入:2016-08-22 23:07
嗨盖特,

嗨盖特,

这里有很少的事情。UART_WRITE(x)将在您的处理程序中阻止。此外,UART_WRITE()shoudl会与此不同。UART_WRITE在ROM中,但我们可以参考UART2_WRITE for功能。void UART2_WRITE(UINT8_T * BUFPTR,UINT32_T大小,void(* Callback)(UINT8_T))。这正在寻找一个指针和尺寸。所以有几个不同的方式可以做到这一点。

1)创建1000个字符缓冲区,并将指针与size = 1000传递。然后,您只需调用一次,并且在完成时将获得回调。所以这样的事情。

uint8_t buffer [1000];

// 0x61'a'的ASCII代码

Memset(缓冲区,0x61,1000);

UART_WRITE(&BUFFER [0],1000,NULL);

2)您可以使用异步方法并使用回调。记忆会更好。UART_WRITE(“a”,1,my_callback)。然后在my_callback中,每次打印一个字符并再次调用UART_WRITE()时,递增一个计数器。

Jon.

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
谢谢,帮助我

谢谢,有助于我了解它!这也可以发送吗?
非常感谢

JK_DIALOG.
离线
最后一次露面:2个月3天前
职员
加入:2016-08-22 23:07
是的。user_ble_push是

是的。user_ble_push正在寻找一个指针和长度 - 类似。这将通过数据传递给FIFO缓冲区并通过BLE发送数据。

jk.

Gert186.
离线
最后一次露面:1年4个月前
加入:2016-04-21 12:59
任何长度限制??

任何长度限制??

JK_DIALOG.
离线
最后一次露面:2个月3天前
职员
加入:2016-08-22 23:07
长度限制可以是

通过追踪user_buffer_create()的代码,可以看到长度限制。这些在user_scheduler_init()中调用,由tx_buffer_item_count定义,rx_buffer_item_count:

if(!user_buffer_initialized(&periph_to_ble_buffer)&&!user_buffer_initialized(&ble_to_periph_buffer))
{
//初始化缓冲区
user_buffer_create(&ble_to_periph_buffer,tx_buffer_item_count,tx_buffer_lwm,tx_buffer_hwm);
user_buffer_create(&periph_to_ble_buffer,rx_buffer_item_count,rx_buffer_lwm,rx_buffer_hwm);
}

#define tx_buffer_item_count(int)1800

#define rx_buffer_item_count(int)1800

user_ble_push,写入ble_to_periph_buffer。

void user_ble_push(uint8_t * wrdata,uint16_t write_amount)
{
bool send_flow_off = false;

//将项目写入缓冲区;

user_buffer_write_items(&ble_to_periph_buffer,wrdata,write_amount);

//检查缓冲区几乎已满,如果是,请发送Xoff
send_flow_off = user_check_buffer_almost_full(&ble_to_periph_buffer);

//如果必须发送Xoff,请尽快发送
if(send_flow_off)
{
user_send_ble_flow_ctrl(flow_off);
}
//开始传输
__disable_irq();
如果(!CallbackBusy)
{
callbackbusy = true;
UART_TX_CALLBALL(UART_STATUS_INIT);
}
__enable_irq();
}