2019-07-19 20:19发布
紫气东升 发表于 2019-4-29 18:47 以下是我写的UART2串口函数,都在这里了,要发送数据时直接调用void UART2_SendCommand(unsigned char *s) ...
最多设置5个标签!
今天继续用这个程序调试,在发送的字符串指令后面加上 。居然可以正常通信了。很奇怪,之前这样试都不行,今天再试竟然通了。
//控制蓝牙指令
unsigned char UART2_Blue_ChangeName[18] = "AT+B SLDN Eacome "; //修改蓝牙名称
unsigned char UART2_Blue_Close[13] = "AT+B SCAN 0 "; //关闭蓝牙
unsigned char UART2_Blue_Open[13] = "AT+B SCAN 3 "; //打开蓝牙
unsigned char UART2_Blue_Off_Hook[13] = "AT+B HFANSW "; //蓝牙摘机
unsigned char UART2_Blue_Hang_Up[13] = "AT+B HFCHUP "; //蓝牙挂机
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW); //开漏高电平低速输出
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_SLOW);
以下是我写的UART2串口函数,都在这里了,要发送数据时直接调用void UART2_SendCommand(unsigned char *s)。回到一开始的问题,哪位仁兄有空可以帮忙看看程序,是否是程序哪里出了问题,为什么发送数据后没有收到返回来的数据,串口助手却可以。
/*********************************************************************************************************
UART2串口IO初始化
*********************************************************************************************************/
void UART2_IO_INIT(void)
{
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW); //开漏高电平低速输出
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_SLOW);
}
/*********************************************************************************************************
UART2串口初始化
*********************************************************************************************************/
void UartConfiguration(void)
{
UART2_DeInit();
UART2_Init( //UART2 configuration
(u32)115200, //BaudRate = 115200 baud 115200 波特率115200
UART2_WORDLENGTH_8D, //Word Length = 8 Bits 字长8位
UART2_STOPBITS_1, //One Stop Bit 1位停止位
UART2_PARITY_NO, //No parity 无奇偶校验
UART2_SYNCMODE_CLOCK_DISABLE, //UART2 Clock disabled 禁用UART2串口时钟
UART2_MODE_TXRX_ENABLE //Receive and transmit enabled 使能发送接收
);
// UART2_ITConfig(UART2_IT_TXE, ENABLE);
UART2_Cmd(ENABLE); //启用串口
UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE);
}
/*********************************************************************************************************
UART2串口发送一个字符
*********************************************************************************************************/
void UART2_SendChar(unsigned char c)
{
// while ((UART2->SR & 0x80)==0x00); //判断发送寄存器是否为空
while((UART2_GetFlagStatus(UART2_FLAG_TXE)==RESET)); //检测发送数据寄存器是否为空
UART2->DR = c; //发送一个字符
while((UART2_GetFlagStatus(UART2_FLAG_TC)==RESET)); //检测发送是否完成
}
/*********************************************************************************************************
UART2串口发送字符串指令
*********************************************************************************************************/
void UART2_SendCommand(unsigned char *s)
{
while (*s != ' ') // 表示字符串结束标志,通过检测是否字符串末尾
{
UART2_SendChar(*s);
s++;
}
}
一周热门 更多>