通过UART发送0

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

大家好,

我现在在DA14580 BLE模块上使用SDK 5.0.4工作,我无法通过ARCH_PRINTF命令发送0。
发送0时,FW跳转到HardFault_Handler.c文件到第141行并留在那里。
if((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up)
__asm(“bkpt#0 \ n”);

任何帮助都会很棒。

关键词:
设备:
PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨yehudanovode,

嗨yehudanovode,

我试图复制您提到的问题,但我能够通过ARCH_PRINTF()发送“0”。我工作在SDK 5.0.4的BLE_APP_BAREBONE示例中,我使用了PRO-DK。让我描述我做了什么,并确保你做过相同的配置。

  1. #define cfg_printf在da1458x_config_basic.h中
  2. 更改FW的UART端口,并将UART_TX端口/引脚分配给P04和UART_RX端口/引脚到P05(确保已更改的配置在HW_CONFIG_PRO_DK下,这是在HW_CONFIG定义中声明的电路板)。

#elif hw_config_pro_dk.

#define uart2_tx_gpio_port gpio_port_0.

#define uart2_tx_gpio_pin gpio_pin_4.

#define uart2_rx_gpio_port gpio_port_0.

#define uart2_rx_gpio_pin gpio_pin_5.

如果您有其他我们的DKS或者您正在使用自定义板,请用适当的GPIO修改上面的定义

  1. 将ARCH_CONSOLE.H文件包含到USER_BAREBONE.C中
  2. 调用Arch_Printf(“0”);进入adv_data_update_timer_cb()函数。所以,我每10秒发送“0”。
  3. 将终端的波特率更改为115200。

如果我理解任何错误,请告诉我你想要完成的东西或让我很热,以调用arch_printf()进入您的代码。

谢谢,PM_DIALOG.

耶朱德诺州
离线
最后一次露面:2年3个月前
加入:2018-11-11 12:38
对不起,不清楚

对不起,不够清楚。

是的,我可以通过ARCH_PRINTF发送0。
问题是当我试图回应UART的输入时。如果插入的一个字节是0x00,那么当我尝试打印保存这个字节的数组的元素时,我会收到此错误。我相信原因是0不认为是“价值”,所以当我试图打印它时,它找不到打印的东西,因此错误。

耶朱德诺州
离线
最后一次露面:2年3个月前
加入:2018-11-11 12:38
我检查了这个问题

我多次检查过这个问题,我想我敢肯定现在的问题是什么。

我使用ARCH_PRINTF函数来打印数组。因此,如果例如,数组的内容是:

Examplearr [2] = {0x01,0x02};

我正在努力运行:

ARCH_PRINTF(examplearr);

打印出是01,02,这正是我想要的。问题开始,当Examplearr的第一个元素为0x00时,则SW运行

if((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up)
__asm(“bkpt#0 \ n”);

错误。
如果第二个元素为0x00,则没有问题。
当我尝试使用ARCH_PRINTF来打印0时:

examplevar = 0;
ARCH_PRINTF(“%x”,examplevar);

没有错误,但实际打印的是0的ASCII值为0,即30。我需要打印0个值,而不是符号......

PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨yehudanovode,

嗨yehudanovode,

你能试试这个代码片段吗?

UInt8_t Examplearr [3] = {0x00,0x01,0x02};

for(Uint8_t i = 0; I <3; I ++)

{

ARCH_PRINTF(“%X”,EXAMPLEARR [I]);

}

ARCH_PRINTF(“\ n \ r”);

否则,请在您将代码片段使用它进入固件时为我提供。

谢谢,PM_DIALOG.

耶朱德诺州
离线
最后一次露面:2年3个月前
加入:2018-11-11 12:38
你好,

你好,

正如我所提到的,ARCH_PRINTF函数通过地址ARCH_PRINTF(EXAMPLEARR)来打印阵列,而不是按value ARCH_PRINTF(Examplearr [i])打印。要更清晰,如果我有一个名为examplevar = 0x01的变量,那么编写Arch_printf(&examplevar)将结束1,在终端上打印,但如果exalvar = 0x00,则Arch_printf(&examplevar)结束了错误!!

我不使用顺利的原因是打印出的值不是实际值,而是其ASCII兼容。所以,如果我返回我的前一个例子,这就是它在这两种情况下的样子:
1)
examplevar = 0x01;
ARCH_PRINTF(&examplevar);
打印出:1

examplevar = 0x00;
ARCH_PRINTF(&examplevar);
打印出:错误

2)
examplevar = 0x01;
ARCH_PRINTF(“%x”,examplevar);
打印出:31

examplevar = 0x00;
ARCH_PRINTF(“%x”,examplevar);
打印出:30

我真的希望这个问题现在很清楚......

PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨yehudanovode,

嗨yehudanovode,

为延迟道歉。我试图测试代码,这个代码段arch_printf(&examplevar)无法由Keil构建。这是一个非常奇怪的情况,因为如果我理解正确,这可以从你身边建造。此外,我的结果不同于你的结果。请检查以下内容:

examplevar = 0x01;

ARCH_PRINTF(“%x”,examplevar);

打印出:1(不是31,它是1的ASCII字符)

examplevar = 0x00;

ARCH_PRINTF(“%x”,examplevar);

打印为:0(不是30,即0的ASCII字符)

如果您已修改ARCH_PRINTF()函数的源代码,请您告诉我吗?您能否在新的SDK路径中尝试这样做?请注意,我正在使用D14580系列的最新SDK(SDK5.0.4)

谢谢,PM_DIALOG.

耶朱德诺州
离线
最后一次露面:2年3个月前
加入:2018-11-11 12:38
你好,

你好,

不,我根本没有修改Arch_Prinf的源代码。
但我有一个更好的解决方案。对于在任何位置打印任何值的数组,我刚刚使用了UART2_WRITE(* arr,size,null)函数,当* arr是指向打印阵列的指针时,大小是要打印的大小,以字节为单位和null是空指针,如函数的描述中所需的。

PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨yehudanovode,

嗨yehudanovode,

由于您没有修改ARCH_PRINF()函数,因此有点奇怪,因为我得到了来自的不同结果。顺便说一下,你很高兴你识上你的问题,为你的迹象表明。

谢谢,PM_DIALOG.

狄俄尼索斯
离线
最后一次露面:2年1个月前
加入:2019-01-13 14:48
亲爱的论坛专家,

亲爱的论坛专家,
我正在使用SDK5.0.4工作DA14580。

我想知道主机如何从从站接收SMP请求。
我已经运行了我的代码,附着在下面,嗅探从站,但在用户函数中没有回调。
似乎它无效?

主机如何从奴隶接收SMP请求?

谢谢,劝告,
狄俄尼索斯

PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨狄俄尼索斯,

嗨狄俄尼索斯,

谢谢你的问题,但它与这个论坛线程无关。如果我理解正确,DA14580充当一个中心。由于您是一个中央,因此无法从外设请求安全性。如果您有任何其他后续问题,请创建一个新的论坛线程。如果您不知道热量创建一个新的论坛线程,请告诉我,我将为您提供合适的步骤。

谢谢,PM_DIALOG.

陈鹏莱
离线
最后一次露面:1个月1周前
加入:2018-12-24 02:24
嗨yehudanovode,

嗨yehudanovode,

您可能会尝试可以发送十六进制的代码,如下所示:

extern void UART_CALLBALL(UINT8_T RES);

UINT8_T数据= 0x00;

UART2_WRITE(&DATA,1,UART_CALLBACK);

PM_DIALOG.
离线
最后一次露面:2天17小时前
职员
加入:2018-02-08 11:03
嗨Chenpenglai,

嗨Chenpenglai,

谢谢你的迹象。

问候,pm_dialog