配置:PLLCLK 32
参考电路图stlink与正点原子的接口连的时候,注意板子上接口实际正反是反的
蓝牙模块
一 蓝牙的AT指令模式
注意EN要接3.3v/EN什么都不接,长按蓝牙按钮的同时然后再上电.
慢闪是AT模式,快闪是透传模式.
指令集:
AT //返回OK
AT+NAME? //返回蓝牙模块的名字
AT+NAME="HC05" //设置蓝牙模块的名字
AT+ROLE? //返回蓝牙模块的状态(从机是0,主机是1)
AT+ROLE=0/1 //设置蓝牙模块为从/主模式
AT+UART? //返回蓝牙模块的波特率
AT+UART=38400,0,0 //设置蓝牙模块的波特率为38400
AT+PSWD? //返回蓝牙模块的配对码
AT+PSWD=“1314” //设置蓝牙模块的配对码
发送指令一定要加回车
注意"\r\n",写程序时候也是(可以参考二)
二 单片机与电脑通信,电脑发送数据控制灯亮灭
uint8_t Tx_str1[]="Hello World!\r\n";
uint8_t Tx_str2[]="LED2 Open!\r\n";
uint8_t Tx_str3[]="LED2 Close!\r\n";
uint8_t Rx_dat[]="0\r\n";
uint8_t Rx_dat1[]="1\r\n";
uint8_t Rx_dat2[]="2\r\n";
#define LED1_ON HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,0);
#define LED1_OFF HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,1);
#define LED2_ON HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,0);
#define LED2_OFF HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,1);void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance==USART1){if(strcmp(Rx_dat,Rx_dat1)){}else{LED1_ON;HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),10000);LED2_ON;}if(strcmp(Rx_dat,Rx_dat2)){}else{LED1_OFF;HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),10000);LED2_OFF;}}
}主函数中:LED1_ON;HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);LED1_OFF;while(1){HAL_UART_Receive_IT(&huart1,Rx_dat,1);}
三 手机蓝牙与电脑通信
1 接线:
蓝牙模块-单片机:vcc-5v,gnd-gnd,rxd-txd,txd-rxd
- 手机和蓝牙模块相连应为透传模式,EN是不接的
- 想AT模式通过电脑串口调试助手修改蓝牙的,EN应该接3.3v.
- 蓝牙模块的rxd和txd接的是单片机原本跳线帽所在的txd和rxd,这一部分是ch340的.即:单片机的串口1的txd和rxd原本通过接线帽连在ch340的rxd和txd上,然后ch340串口转usb下载程序到电脑,也就是我们一般和电脑通信都是用串口1的;当我们给跳线帽取下来,那就直接接ch340的txd和rxd和电脑通信了,实际上和单片机没啥关系,它只负责提供一个电压.
2 效果:
手机连接上以后(需要开启位置),发送a,电脑的串口调试助手就会显示接收到a;串口调试助手发送a,那么手机端也会接收到a
四 手机蓝牙与单片机通信,控制灯亮灭
主函数里:
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
HAL_UART_Receive_IT(&huart2,&rec,sizeof(rec));uint8_t rec;
extern UART_HandleTypeDef huart2;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART2){if(rec=='1'){HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);}if(rec=='2'){HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);}}HAL_UART_Receive_IT(&huart2,&rec,sizeof(rec));
}
五 手机蓝牙控制小车运动