如何在无附带方面发出新的AT命令以改变BLE UART的波特率。
Hi ant777222,
无附加方案参考应用程序代码开发了快速评估或执行一些基本的BLE功能,而无需在代码中潜入。您需要实现的是可实现的,但您需要自己做一些工作并调试一些用户应用程序功能。查看user_codeless.c中的函数void user_execute_commands(char * cmd)。此函数在命令中占用一串分号,并逐个执行它们。将user_app_cmd_receveed发送到内核。然后,请检查处理user_app_cmd_received消息的user_catch_rest_hndl()。您的自定义AT命令应添加到AT_COMMAND_CHARACTIONS_T跳转表中。请按照USE_AT_ADVSTART宏,该宏负责启动广告。此外,您应该注意如何通过Perip_init()函数中的波特率。
谢谢,PM_DIALOG.
我发了一个命令,+波特= 0。现在它所都是返回OK。我正在努力弄清楚将波特率传递成Perip_init的最佳方式()你如何建议我这件事?
请查看Periph_init()函数,您将看到UART2以57600波特率最终确定。一旦您发送适当的AT命令,您应该将波特率保持为变量并将其传递在UART2_INIT()中。
现在我在user_at_commands.c中拥有这一点代码,将波特率更改为115200。
#ifdef USE_AT_BAUDvoid user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string){uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);if(index == 3){UART2_INIT(UART_BAUDRATE_115K2,UART_CHARFORMAT_8);arg-> success_flag = true;}
}
#万一
然而,这冻结了终端。当我将终端的波特率设置更改为115200时,它仍然冻结。
您能分享如何用自定义AT_Command_Characteristics_t跳转表与您的Custom 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
{at_baud,“baud”,4,user_at_baud,1,11,Rply_max_size},
如果我将void user_at_random()中的代码放入我的void user_at_baud()并使用AT命令AT + BAUK = 3我会获得随机数,因为我期望的。
如果我将此添加到我的user_at中_BAUD() funtion which does not change the BAUD rate but keeps it at 57K6 the terminal also freezes.
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);if(index == 3){UART2_INIT(UART_BAUDRATE_57K6,UART_CHARFORMAT_8);arg-> success_flag = true;
我还没有连接调试器,我在等我的IT部门连接右驱动程序。现在与J3的连接只充当电源。我的P0_4连接到RX和P0_5到TX和J4引脚2连接到COM端口的地面。这可能是这个问题吗?
因此,我正在正确改变波特率,但是,当我更改波特率时,键盘无法在终端内键入终端。通过LightBlue应用程序,我仍然可以在更改波特率后键入PIPE命令时键入命令。如果我键入ATR,例如终端没有通过OK响应,我希望能够读取终端和手机连接的响应。此外,我也想解决无法键入键盘到终端改变波特率后。
为延迟道歉。由于波特率发生了变化,因此我认为来自串行终端的波特率也应该改变。
我正在改变终端的波特率。添加user_charachter_parser_start()解决了问题。
void user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string){uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);if(index == 5){uart2_init (UART_BAUDRATE_38K4 UART_CHARFORMAT_8);user_charachter_parser_start();arg-> success_flag = true;}
很高兴你识上你的问题,非常感谢你的迹象。
Hi ant777222,
无附加方案参考应用程序代码开发了快速评估或执行一些基本的BLE功能,而无需在代码中潜入。您需要实现的是可实现的,但您需要自己做一些工作并调试一些用户应用程序功能。查看user_codeless.c中的函数void user_execute_commands(char * cmd)。此函数在命令中占用一串分号,并逐个执行它们。将user_app_cmd_receveed发送到内核。然后,请检查处理user_app_cmd_received消息的user_catch_rest_hndl()。您的自定义AT命令应添加到AT_COMMAND_CHARACTIONS_T跳转表中。请按照USE_AT_ADVSTART宏,该宏负责启动广告。此外,您应该注意如何通过Perip_init()函数中的波特率。
谢谢,PM_DIALOG.
我发了一个命令,+波特= 0。现在它所都是返回OK。我正在努力弄清楚将波特率传递成Perip_init的最佳方式()你如何建议我这件事?
Hi ant777222,
请查看Periph_init()函数,您将看到UART2以57600波特率最终确定。一旦您发送适当的AT命令,您应该将波特率保持为变量并将其传递在UART2_INIT()中。
谢谢,PM_DIALOG.
现在我在user_at_commands.c中拥有这一点代码,将波特率更改为115200。
#ifdef USE_AT_BAUD
void user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string)
{
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 3){
UART2_INIT(UART_BAUDRATE_115K2,UART_CHARFORMAT_8);
arg-> success_flag = true;
}
}
#万一
然而,这冻结了终端。当我将终端的波特率设置更改为115200时,它仍然冻结。
Hi ant777222,
您能分享如何用自定义AT_Command_Characteristics_t跳转表与您的Custom 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?
谢谢,PM_DIALOG.
我将以下代码添加到跳转表中。
#ifdef USE_AT_BAUD
{at_baud,“baud”,4,user_at_baud,1,11,Rply_max_size},
#万一
如果我将void user_at_random()中的代码放入我的void user_at_baud()并使用AT命令AT + BAUK = 3我会获得随机数,因为我期望的。
如果我将此添加到我的user_at中_BAUD() funtion which does not change the BAUD rate but keeps it at 57K6 the terminal also freezes.
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 3){
UART2_INIT(UART_BAUDRATE_57K6,UART_CHARFORMAT_8);
arg-> success_flag = true;
我还没有连接调试器,我在等我的IT部门连接右驱动程序。现在与J3的连接只充当电源。我的P0_4连接到RX和P0_5到TX和J4引脚2连接到COM端口的地面。这可能是这个问题吗?
因此,我正在正确改变波特率,但是,当我更改波特率时,键盘无法在终端内键入终端。通过LightBlue应用程序,我仍然可以在更改波特率后键入PIPE命令时键入命令。如果我键入ATR,例如终端没有通过OK响应,我希望能够读取终端和手机连接的响应。此外,我也想解决无法键入键盘到终端改变波特率后。
Hi ant777222,
为延迟道歉。由于波特率发生了变化,因此我认为来自串行终端的波特率也应该改变。
谢谢,PM_DIALOG.
我正在改变终端的波特率。添加user_charachter_parser_start()解决了问题。
void user_at_BAUD(struct at_cmd_params_t* arg, char* reply_string)
{
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 5){
uart2_init (UART_BAUDRATE_38K4 UART_CHARFORMAT_8);
user_charachter_parser_start();
arg-> success_flag = true;
}
Hi ant777222,
很高兴你识上你的问题,非常感谢你的迹象。
谢谢,PM_DIALOG.