⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
6个职位/0个新职位
最后一篇文章
德国186
离线
最后一次见到:1年4个月前
已加入:2016-04-21 12:59
理解问题

你好,

我想打印1000次

对于(int i=0;i<=1000;i++){
uart_write(“a”,16,NULL);}

但它只在uart上打印一部分,然后它就会被停止。。。

如果我从主机接收到一些东西,我会在DSPS设备中连接这些东西:

int user\u sps\u server\u data\u rx\u ind\u handler(ke\u msg\u id\u t const msgid,
结构sps\u服务器\u数据\u接收\u索引常量*参数,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
对于(int i=0;i<=1000;i++){
uart_write(“a”,16,NULL);}
用户\u ble \u push((uint8 \u t*)参数->数据,参数->长度);

返回(已消耗的消息);
}

我撞墙了:-)

也许有人能给我指路:-)

设备:
JK\U对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2016-08-22 23:07
嗨,格特,

嗨,格特,

这里发生的事情很少。uart\u write(x)将阻塞处理程序。另外,uartèu write()的处理方式应该与此稍有不同。uart\u write在ROM中,但是我们可以参考uart2\u write来了解其功能。void uart2\u write(uint8\u t*bufptr,uint32\u t size,void(*回调)(uint8\u t))。这是在寻找指针和大小。所以你可以用几种不同的方法来做。

1) 创建一个1000个字符的缓冲区,将指针与size=1000一起传递,然后只需调用一次,完成后就会得到一个回调。就像这样。

uint8_t缓冲器[1000];

//0x61“a”的Ascii码

memset(缓冲区,0x611000);

uart\u write(&buffer[0],1000,NULL);

2) 您可以使用异步方法和回调。记忆力会更好。uart\u write(“a”,1,我的\u回调)。然后在我的\回调中,只要在每次打印字符时增加一个计数器,然后再次调用uart \ u write()。

乔恩

德国186
离线
最后一次见到:1年4个月前
已加入:2016-04-21 12:59
谢谢你帮了我

谢谢,这有助于我理解它!这也可以发送吗?
谢谢

JK\U对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2016-08-22 23:07
对。用户\u ble \u push是

对。用户\u ble \u push正在查找指针和长度-类似地。这会将数据传递到FIFO缓冲区,并通过BLE发送数据。

JK公司

德国186
离线
最后一次见到:1年4个月前
已加入:2016-04-21 12:59
任何长度限制??

任何长度限制??

JK\U对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2016-08-22 23:07
长度限制可以是

可以通过跟踪user\u buffer\u create()的代码来查看长度限制。它们在user\u scheduler\u init()中调用,由TX\u BUFFER\u ITEM\u COUNT和RX\u BUFFER\u ITEM\u COUNT定义:

如果(!用户缓冲区\u已初始化(&periph\u to \u ble\u buffer)&&!用户\u缓冲区\u已初始化(&ble\u to \u periph\u缓冲区))
{
//初始化缓冲区
用户缓冲区\u create(&ble\u to\u periph\u buffer,TX\u buffer\u ITEM\u COUNT,TX\u buffer\u LWM,TX\u buffer\u HWM);
用户缓冲区\u创建(&periph\u to \u ble\u buffer,RX\u buffer\u ITEM\u COUNT,RX\u buffer\u LWM,RX\u buffer\u HWM);
}

#定义发送缓冲区项目计数(int)1800

#定义接收缓冲区项目计数(int)1800

用户\u ble \u push,写入ble \u to \u periph \u缓冲区。

void user\u ble\u push(uint8\u t*wrdata,uint16\u t write\u amount)
{
bool send\u flow\u off=假;

//将项目写入缓冲区;

用户缓冲区写入项(&B)到缓冲区,wrdata,写入量;

//检查缓冲区是否已满,如果已满,则发送XOFF
send\u flow\u off=user\u check\u buffer\u most\u full(&ble\u to\u periph\u buffer);

//如果必须发送XOFF,请尽快发送
if(发送流)
{
用户发送流控制(流关闭);
}
//开始传输
__禁用irq();
如果(!胼胝体)
{
callbackbusy=真;
uart\u tx\u回调(uart\u STATUS\u INIT);
}
__启用\u irq();
}