如何在无附带方面发出新的AT命令以改变BLE UART的波特率。
你好,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。
#如果定义使用波特率void user\u at \u BAUD(struct at \u cmd \u params \u t*arg,char*reply \u 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命令分享如何?语法的描述如下所示:
既然您发送了AT+BAUD=0命令,您能否在调试模式下运行它,以确定是否触发了用户\u AT\u 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我会获得随机数,因为我期望的。
如果我将它添加到我的用户\u at \u BAUD()函数中,它不会改变波特率,但保持在57K6,终端也会冻结。
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\u at \u BAUD(struct at \u cmd \u params \u t*arg,char*reply \u string){uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);if(index == 5){uart2\u init(UART\u波特率\u 38K4,UART\u字符格式\u 8);user_charachter_parser_start();arg-> success_flag = true;}
很高兴你识上你的问题,非常感谢你的迹象。
你好,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的最佳方式()你如何建议我这件事?
你好,ant777222,
请查看Periph_init()函数,您将看到UART2以57600波特率最终确定。一旦您发送适当的AT命令,您应该将波特率保持为变量并将其传递在UART2_INIT()中。
谢谢,PM_DIALOG.
现在我在user_at_commands.c中拥有这一点代码,将波特率更改为115200。
#如果定义使用波特率
void user\u at \u BAUD(struct at \u cmd \u params \u t*arg,char*reply \u 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时,它仍然处于冻结状态。
你好,ant777222,
您能分享如何用自定义AT_Command_Characteristics_t跳转表与您的Custom AT命令分享如何?语法的描述如下所示:
既然您发送了AT+BAUD=0命令,您能否在调试模式下运行它,以确定是否触发了用户\u AT\u BAUD()回调函数?
谢谢,PM_DIALOG.
我将以下代码添加到跳转表中。
#如果定义使用波特率
{at_baud,“baud”,4,user_at_baud,1,11,Rply_max_size},
#万一
如果我将void user_at_random()中的代码放入我的void user_at_baud()并使用AT命令AT + BAUK = 3我会获得随机数,因为我期望的。
如果我将它添加到我的用户\u at \u BAUD()函数中,它不会改变波特率,但保持在57K6,终端也会冻结。
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响应,我希望能够读取终端和手机连接的响应。此外,我也想解决无法键入键盘到终端改变波特率后。
你好,ant777222,
为延迟道歉。由于波特率发生了变化,因此我认为来自串行终端的波特率也应该改变。
谢谢,PM_DIALOG.
我正在改变终端的波特率。添加user_charachter_parser_start()解决了问题。
void user\u at \u BAUD(struct at \u cmd \u params \u t*arg,char*reply \u string)
{
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 5){
uart2\u init(UART\u波特率\u 38K4,UART\u字符格式\u 8);
user_charachter_parser_start();
arg-> success_flag = true;
}
你好,ant777222,
很高兴你识上你的问题,非常感谢你的迹象。
谢谢,PM_DIALOG.