我做了一些研究,但无法找到适合我的问题的解决方案。因为我现在真的没有任何想法,以及我应该搜索的内容,如何自己解决问题,我想问你。
由于我是C的新手,我希望这不是一个愚蠢的初学者问题,但我真的不知道如何修复它。
在尝试推进时,我将问题分为以下代码:
uint32_t possibleBaudrates[12] =
{
1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400
};
uint8_t AT[2] = {'A', 'T'};
for(uint8_t i = 0; i < 12; ++i)
{
UART_SetBaudrate(&UART_0, possibleBaudrates[i], 16);
delay(1000000);
UART_Transmit(&UART_0, AT, 2);
}
为了给您提供更多信息,我正在尝试配置HC06模块的Baudrate。为了测试这个,我在智能手机上发送AT给Blueterm。问题应该是数组,因为以下代码运行良好(它在我的智能手机上的Blueterm上写入12x AT):
uint32_t possibleBaudrates[12] =
{
1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400
};
uint8_t AT[2] = {'A', 'T'};
for(uint8_t i = 0; i < 12; ++i)
{
UART_SetBaudrate(&UART_0, 9600, 16);
delay(1000000);
UART_Transmit(&UART_0, AT, 2);
}
我对第一个代码的期望是Blueterm上的单个AT,但我至少犯了一个错误。
编辑:我认为我提供的信息太少了,sry。 第一个代码示例的行为是,Blueterm上没有任何内容。它应该是,&#34; AT&#34;一次(HC06模块的波特率设置为9600,如果它通过阵列,则应该是9600)
Edit2:它只是有问题的部分,后来就可以使用你可以获得波特率,在HC06模块上设置(如果我没有连接到Blueterm,&#34; AT&#34;使模块回答&#34; OK&#34;。但是通过阵列似乎出错了。) 另外,如果Baudrate不是9600,则Blueterm(已测试)上没有打印任何内容
Edit3:我必须道歉,有了Rad雷克萨斯的暗示,我发现我的代码出现了另一个问题(似乎是对Dave4的UART_SetBaudrate方法的误解,似乎在使用它之后设置了一次,所以
UART_SetBaudrate(&UART_0, 2400, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
UART_SetBaudrate(&UART_0, 9600, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
UART_SetBaudrate(&UART_0, 9600, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
不会在blueterm上打印任何内容,而
UART_SetBaudrate(&UART_0, 9400, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
UART_SetBaudrate(&UART_0, 2400, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
UART_SetBaudrate(&UART_0, 4800, 16);
delay(10000000);
UART_Transmit(&UART_0, AT, 2);
将打印3x&#34; AT&#34;关于blueterm
提前谢谢,我现在知道如何继续(在哪里照顾错误)并为这个误导性问题而烦恼。我现在必须完成这个问题还是删除或其他什么?
答案 0 :(得分:2)
所以,如果我错了,请纠正我。你想做一个循环并尝试发送一个包含所有波特率的消息,对吗?
如果是这样的话,每当你用不是终端的波特率的波特率发送时,你都会在终端收到垃圾字符。
您应该将程序设置为以给定的波特率工作,或者选择您希望在程序开头工作的波特率。