关于stm32的学习记录
stm32基于hal库的蓝牙串口通信
先简单记录一下用到的工具:
stm32f103c8t6,st-link,usb-ttl,蓝牙模块hc-05、hc-06
本次设计模型使用手机蓝牙APP向蓝牙发送指令,stm32最小系统通过串口接收到的指令选择要执行的步骤以控制小车运动。鉴于本次仅仅使用蓝牙接收指令,并不需要用单片机来调试蓝牙模块,所以没有写相关代码,如有需要后续补充。
1、通过cubemx配置stm32
设置外部晶振
设置四线调试模式
设置时钟
其余设置(中断,定时器配置pwm)按需要配置
2、添加相关自定义代码,以实现串口通信,pwm调速功能
1.开启pwm
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
2,设置串口重定向,后面可以用于测试代码,测试单片机接收数据的格式
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xffff);
return ch;
}
int fgetc(FILE * f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1,&ch,1, 0xffff);
return ch;
}
3.设置一些全局变量,位置应该按自己的思路定,因为我把中断设置在it.c文件里,其余配置和本次实验的主要功能设置在main.c文件里,所以我的全局变量设置仅供参考
//main.c
int res=0;
extern uint8_t * msg;
extern uint8_t msg_buff[MAX_RECV_LEN];
//stm32f1xx_it.c
#define MAX_RECV_LEN 1024
uint8_t msg_buff[MAX_RECV_LEN] = {0};
uint8_t * msg = msg_buff;
extern uint16_t speed;
4.在主函数中,要先开启第一次中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)msg, 1);
5.编写hal库的串口回调函数,主要功能在这个函数里面
注意memset函数,代码上有要注意的内容
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE: This function Should not be modified, when the callback is needed,
the HAL_UART_RxCpltCallback could be implemented in the user file
*/
uint8_t ret=HAL_OK;
uint8_t res=0;
msg++;
if(msg==msg_buff+MAX_RECV_LEN)
{
msg=msg_buff;//msg指针指向msg_buff首部
}
do
{
ret=HAL_UART_Receive_IT(&huart1,(uint8_t*)msg,1);
}while(ret!=HAL_OK);
if(*(msg-1)=='\n')
{
// flag = true;
// printf("msg_buff: %s",msg_buff);
res=*(msg_buff);
// printf("res: %d",res);
// 可以在这个区域添加功能代码,根据发送的res值,实现自己的功能
}
memset(msg_buff,0,sizeof(msg_buff));//注意这个函数,初始化函数
//按字节对内存块进行初始化
//需要调用头文件#include string.h“”
msg=msg_buff;
(&huart1)->pRxBuffPtr = msg;
}
}
6.主函数里也可以按自己的需要调用res,或者使用flag,实现自己的功能
3、通过usb-ttl连接蓝牙串口,调试蓝牙模块
使用蓝牙助手配置好蓝牙模块,然后连接单片机测试
4、连接单片机与蓝牙模块
5、用手机蓝牙APP连接蓝牙模块,发送指令测试
可以在代码中添加printf,检验代码,并且判断单片机接收到的数据类型和数据内容
注意部分APP发送的指令需手动添加回车键才能正常结束中断
6、连接所有模块,供电,测试
完成以上步骤可以测试所有功能
暂时先写这么多,有时间会逐步完善
参考:https://blog.csdn.net/xld_19920728/article/details/78214359
来源:CSDN
作者:ζั͡Dream ™
链接:https://blog.csdn.net/qq_45172156/article/details/103826321