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

大家好,

我现在的DA14580 BLE模块与SDK 5.0.4工作,我无法通过arch_printf命令发送0。
当发送0时,FW跳转到hardfault_handler.c文件,以线141,呆在那里。
如果((GetWord16(SYS_STAT_REG)DBG_IS_UP)== DBG_IS_UP)
__asm( “BKPT#0 \ n”);

任何帮助将是巨大的。

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

嗨YehudaNovodes,

我试图复制你提到的问题,但我能够通过arch_printf()发送“0”。我在SDK 5.0.4的ble_app_barebone例子中工作,我使用的是Pro-DK。我来描述一下我做了什么确保你们做了相同的构型。

  1. 在da1458x_config_basic.h的#define CFG_PRINTF
  2. 更改fw的UART端口和端口UART_TX /引脚分配给P04和UART_RX端口/引脚P05(请确保您已经更改了配置下的HW_CONFIG_PRO_DK,而这板在HW_CONFIG定义声明)。

#elif指令HW_CONFIG_PRO_DK

#定义UART2_TX_GPIO_PORT GPIO_PORT_0

#定义UART2_TX_GPIO_PIN GPIO_PIN_4

#定义UART2_RX_GPIO_PORT GPIO_PORT_0

#定义UART2_RX_GPIO_PIN GPIO_PIN_5

如果你有一个死亡骑士我们其他,或者如果你是在一个定制的开发板,请用适当的GPIO修改上述定义

  1. 包括arch_console.h文件到user_barebone.c
  2. 调用arch_printf( “0”);成adv_data_update_timer_cb()函数。所以,我送“0”每10秒。
  3. 修改终端波特率为115200。

如果我理解任何错误,请让我知道你要完成或提供给我烫调用arch_printf()到你的代码是什么。

谢谢,PM_DIALOG.

YehudaNovodes
离线
最后一次露面:2年8个月前
加入:2018-11-11 38
抱歉我没说清楚

对不起,我不是足够清晰。

是的,我可以通过arch_printf发送0。
问题是,当我试图呼应了UART输入。如果插入其中一个字节是0×00,那么当我试图打印持有该字节数组中的元素,我得到这个错误。我认为,原因是0不考虑作为一个“值”,所以,当我试图打印,它无法找到打印,因此错误。

YehudaNovodes
离线
最后一次露面:2年8个月前
加入:2018-11-11 38
我查了问题有点

我又检查了一下这个问题,我想我确定现在的问题是什么。

我使用arch_printf函数打印数组。例如,如果数组的内容是:

ExampleArr [2] = {0×01,0×02};

我想逃跑

arch_printf(ExampleArr);

打印出来是01,02这正是我想要的。问题开始时ExampleArr的第一个元素是0×00,则SW运行成

如果((GetWord16(SYS_STAT_REG)DBG_IS_UP)== DBG_IS_UP)
__asm( “BKPT#0 \ n”);

错误。
如果第二个元素为0x00没有任何问题。
当我试图使用arch_printf打印0像这样:

ExampleVar = 0;
arch_printf( “%X”,ExampleVar);

没有错误,但实际上打印的是ASCII值0,也就是30。我需要打印0值,而不是符号…

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

嗨YehudaNovodes,

您能试一下这段代码吗?

uint8_t ExampleArr[3] = {0x00, 0x01, 0x02};

对于(uint8_t I = 0; I <3; i ++在)

{

arch_printf( “%X”,ExampleArr [I]);

}

arch_printf( “\ n \ r”);

否则,请提供您的代码片段,因为您正在使用它到您的固件。

谢谢,PM_DIALOG.

YehudaNovodes
离线
最后一次露面:2年8个月前
加入:2018-11-11 38
你好,

你好,

正如我所提到的,arch_printf函数获取阵列由地址arch_printf(ExampleArr),而不是由值arch_printf(ExampleArr [I])进行打印。为了更清楚,如果我有一个名为ExampleVar = 0×01的变量,然后写arch_printf(&ExampleVar)被1结束,印刷在终端,但如果ExampleVar = 0x00,则arch_printf(&ExampleVar),误差结束!!

我没有使用您的方法的原因是输出的值不是实际值,而是它的ASCII兼容。所以,如果我回到我之前的例子,这是它在两种情况下的样子:
1)
ExampleVar = 0×01;
arch_printf(&ExampleVar);
打印出来的是:1

ExampleVar = 0×00;
arch_printf(&ExampleVar);
打印出来的是:错误

2)
ExampleVar = 0×01;
arch_printf( “%X”,ExampleVar);
打印出来的是:31

ExampleVar = 0×00;
arch_printf( “%X”,ExampleVar);
打印出来的是:30

我真希望问题现在已经弄清楚了。

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

嗨YehudaNovodes,

很抱歉耽搁了。我试图测试您的代码,这段代码片段arch_printf(&ExampleVar)不能由Keil构建。这是一个相当奇怪的情况,因为如果我理解正确,这可以从你的方面构建。而且,我的结果和你的不一样。请查看以下内容:

ExampleVar = 0×01;

arch_printf( “%X”,ExampleVar);

输出结果为:1(而不是31,它是ASCII字符1)

ExampleVar = 0×00;

arch_printf( “%X”,ExampleVar);

打印出的是:0(和NOT 30为0的ASCII字符)

能否请你让我知道如果你已经修改了arch_printf()函数的源代码?能否请你尝试做相同的一个新的SDK路径?请注意,我用的D14580系列的最新SDK(SDK5.0.4)

谢谢,PM_DIALOG.

YehudaNovodes
离线
最后一次露面:2年8个月前
加入:2018-11-11 38
你好,

你好,

不,我还没有在所有修改arch_prinf的源代码。
但我有一个更好的解决办法。打印数组的值在任何位置,我只是使用了uart2_write (arr *,大小,NULL)函数,当* arr打印数组的指针,印刷尺寸大小,以字节为单位,和零是空指针,需要描述的功能。

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

嗨YehudaNovodes,

既然你没有修改arch_prinf()函数,这是一个有点怪,因为我从你的不同结果。顺便说,很高兴你想通您的问题出来,那你的指示。

谢谢,PM_DIALOG.

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

亲爱的论坛专家,
我正在使用sdk5.0.4开发DA14580。

我想知道如何主机接收来自从SMP请求。
我跑我的代码,在下方附上,嗅出奴隶,但有在用户功能没有回调。
现在看来,这是无效的?

主机如何接收来自从SMP请求?

由于advcance,
狄俄尼索斯

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

嗨狄俄尼索斯,

谢谢你的问题,但它与这个论坛线程无关。如果我理解正确的话DA14580是一个中心。由于您是中心服务器,因此不能向外设请求安全性。如果您有任何其他后续问题,请创建一个新的论坛线程。如果你不知道如何创建一个新的论坛帖子,请让我知道,我会为你提供适当的步骤。

谢谢,PM_DIALOG.

chenpenglai
离线
最后一次露面:6个月1周前
加入:2018年12月24日02:24
嗨YehudaNovodes,

嗨YehudaNovodes,

你可以试试我的代码,它可以发送十六进制,如下:

的extern空隙uart_callback(uint8_t RES);

uint8_t数据= 0×00;

uart2_write(数据,1,uart_callback);

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

嗨chenpenglai,

谢谢你的指点。

问候,PM_DIalog