我将如何使一个新的AT命令在无代码改变波特率的uart的。
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()函数中传递波特率。
谢谢,下午好
我做了一个命令,在+BAUD=0。现在它所做的就是返回ok。我正在努力找出将波特率传递到peripinit()的最佳方法,您建议我怎么做?
请看一下periph\u init()函数,您将看到UART2是以57600波特率完成的。一旦您发送了适当的AT命令,您就应该将波特率保存到一个变量中,并将其传递到uart2\u init()中。
现在我在user_at_commands.c中有一段代码将波特率改为115200。
#ifdef USE_AT_BAUDvoid 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.
你能分享一下你是如何用你的自定义at命令修改at命令跳转表的吗?语法说明如下:
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?
我在跳转表中添加了以下代码。
#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命令,我会得到一个随机数。
如果我把这个添加到我的用户_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端口的地上。这就是问题所在吗?
所以我正确地改变了波特率,但是,当我改变波特率时,键盘就不能再在终端上输入了。通过lightblue应用程序,我仍然可以发送命令,例如在我改变波特率后,用管道命令键入。例如,如果我键入ATr,终端不响应ok,我希望能够读取终端和连接的电话上的响应。。另外,我想修复不能用键盘输入到终端后,改变波特率。
抱歉耽搁了。既然波特率改变了,我想串行终端的波特率也应该改变。
我在改变终端的波特率。添加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->成功标志=真;}
很高兴你解决了你的问题,非常感谢你的指示。
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()函数中传递波特率。
谢谢,下午好
我做了一个命令,在+BAUD=0。现在它所做的就是返回ok。我正在努力找出将波特率传递到peripinit()的最佳方法,您建议我怎么做?
Hi ant777222,
请看一下periph\u init()函数,您将看到UART2是以57600波特率完成的。一旦您发送了适当的AT命令,您就应该将波特率保存到一个变量中,并将其传递到uart2\u init()中。
谢谢,下午好
现在我在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.
Hi ant777222,
你能分享一下你是如何用你的自定义at命令修改at命令跳转表的吗?语法说明如下:
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?
谢谢,下午好
我在跳转表中添加了以下代码。
#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命令,我会得到一个随机数。
如果我把这个添加到我的用户_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端口的地上。这就是问题所在吗?
所以我正确地改变了波特率,但是,当我改变波特率时,键盘就不能再在终端上输入了。通过lightblue应用程序,我仍然可以发送命令,例如在我改变波特率后,用管道命令键入。例如,如果我键入ATr,终端不响应ok,我希望能够读取终端和连接的电话上的响应。。另外,我想修复不能用键盘输入到终端后,改变波特率。
Hi ant777222,
抱歉耽搁了。既然波特率改变了,我想串行终端的波特率也应该改变。
谢谢,下午好
我在改变终端的波特率。添加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->成功标志=真;
}
Hi ant777222,
很高兴你解决了你的问题,非常感谢你的指示。
谢谢,下午好