⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
12个职位/0个新职位
最后一篇文章
ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
按命令新建

我将如何使一个新的AT命令在无代码改变波特率的uart的。

关键词:
设备:
PM\U对话框
离线
最后一次见到:18分1秒前
工作人员
已加入:2018-02-08 11:03
Hi ant777222,

Hi ant777222,

开发无代码参考应用程序代码是为了快速评估或执行一些基本的可编程功能,而不必深入代码。您需要实现的是可以实现的,但是您需要自己完成一些工作并调试一些用户应用程序功能。看看user\u codeless.c中的函数void user\u execute\u commands(char*cmd)。这个函数在命令处用一个分号字符串分隔,然后逐个执行它们。接收到的用户APP CMD被发送到内核。然后,检查用户catch rest hndl(),它处理用户APP CMD收到的消息。您的自定义AT命令应添加到AT\u command\u t jump表中。请遵循负责启动广告的使用\u ADVSTART宏。此外,您还应该注意如何在peripinit()函数中传递波特率。

谢谢,下午好

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
我做了一个命令,在+BAUD=0。

我做了一个命令,在+BAUD=0。现在它所做的就是返回ok。我正在努力找出将波特率传递到peripinit()的最佳方法,您建议我怎么做?

PM\U对话框
离线
最后一次见到:18分1秒前
工作人员
已加入:2018-02-08 11:03
Hi ant777222,

Hi ant777222,

请看一下periph\u init()函数,您将看到UART2是以57600波特率完成的。一旦您发送了适当的AT命令,您就应该将波特率保存到一个变量中,并将其传递到uart2\u init()中。

谢谢,下午好

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
现在我有点

现在我在user_at_commands.c中有一段代码将波特率改为115200。

#ifdef USE_AT_BAUD
void user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string)
{
uint8\u t index=ahtoi(&arg->cmd\u buffer[arg->arg\u index[0]]);
如果(指数==3){
uart2\u init(UART\u波特率\u 115K2,UART\u字符格式\u 8);
arg->成功标志=真;
}

}

#结束

然而,这冻结的终端。当我改变the baud rate setting on the terminal to 115200 it is still frozen.

PM\U对话框
离线
最后一次见到:18分1秒前
工作人员
已加入:2018-02-08 11:03
Hi ant777222,

Hi ant777222,

你能分享一下你是如何用你的自定义at命令修改at命令跳转表的吗?语法说明如下:

  • AT command id index
  • AT命令标记字符串
  • AT command tag length
  • 实现该功能的AT命令回调
  • Minimum number of arguments
  • Maximum number of arguments
  • Max reply size string of argument

Since you send the AT+BAUD=0 command, can you please run it in debug mode in order to clarify if the user_at_BAUD() callback function is triggered?

谢谢,下午好

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
我将以下代码添加到

我在跳转表中添加了以下代码。

#ifdef USE_AT_BAUD

{波特率,4,用户波特率,1,1,RPLY,MAX,SIZE},

#结束

如果我把void user\u at \u random()中的代码放到void user\u at \u BAUD()中,并在+BAUD=3处使用at命令,我会得到一个随机数。

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
如果我把这个添加到我的用户

如果我把这个添加到我的用户_BAUD() funtion which does not change the BAUD rate but keeps it at 57K6 the terminal also freezes.

uint8\u t index=ahtoi(&arg->cmd\u buffer[arg->arg\u index[0]]);
如果(指数==3){
uart2\u init(UART\u波特率\u 57K6,UART\u字符格式\u 8);
arg->成功标志=真;

我还没有连接调试器,我正在等待我的IT部门连接正确的驱动程序。现在连接到J3只作为电源。我已经把p0u4连接到Rx,p0u5连接到Tx,J4的引脚2连接到COM端口的地上。这就是问题所在吗?

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
所以我要改变波特率

所以我正确地改变了波特率,但是,当我改变波特率时,键盘就不能再在终端上输入了。通过lightblue应用程序,我仍然可以发送命令,例如在我改变波特率后,用管道命令键入。例如,如果我键入ATr,终端不响应ok,我希望能够读取终端和连接的电话上的响应。。另外,我想修复不能用键盘输入到终端后,改变波特率。

PM\U对话框
离线
最后一次见到:18分1秒前
工作人员
已加入:2018-02-08 11:03
Hi ant777222,

Hi ant777222,

抱歉耽搁了。既然波特率改变了,我想串行终端的波特率也应该改变。

谢谢,下午好

ant777222型
离线
最后一次见到:1周3天前
已加入:2019-07-11 17:03
我在改变波特率

我在改变终端的波特率。添加user\u charachter\u parser\u start()解决了这个问题。

void user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string)
{
uint8\u t index=ahtoi(&arg->cmd\u buffer[arg->arg\u index[0]]);
如果(指数==5){
uart2_init(UART_BAUDRATE_38K4, UART_CHARFORMAT_8);
user_charachter_parser_start();
arg->成功标志=真;
}

PM\U对话框
离线
最后一次见到:18分1秒前
工作人员
已加入:2018-02-08 11:03
Hi ant777222,

Hi ant777222,

很高兴你解决了你的问题,非常感谢你的指示。

谢谢,下午好