当前位置: 首页 > news >正文

stm32 之20.HC-06蓝牙模块

原理图显示使用usart3串口使用的是PB10和PB11引脚

 直接配置usart3串口协议

void usart3_init(uint32_t baud)
{GPIO_InitTypeDef GPIO_InitStructureure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;//端口B硬件时钟打开RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//串口3硬件时钟打开RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//配置PA9 PA10为AF模式(复用功能)GPIO_InitStructureure.GPIO_Pin   = GPIO_Pin_11 | GPIO_Pin_10 ; 	//9 10号引脚GPIO_InitStructureure.GPIO_Mode  = GPIO_Mode_AF;//输出模式第三种模式AF模式GPIO_InitStructureure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructureure.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高GPIO_InitStructureure.GPIO_PuPd  = GPIO_PuPd_NOPULL;//不使能上下拉电阻GPIO_Init(GPIOB,&GPIO_InitStructureure);//由于引脚支持很多功能,需要指定该引脚的功能,当前要制定支持USART1GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3);GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3);//配置USART1相关参数:波特率,数据位,停止位,校验位USART_InitStructure.USART_BaudRate = baud;   //波特率,就是通信的速度USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8位数据位USART_InitStructure.USART_StopBits = USART_StopBits_1;  //1个停止位USART_InitStructure.USART_Parity = USART_Parity_No;    //不需要校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //硬件流控制功能不需要USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;   //串口允许发送和接收数据USART_Init(USART3, &USART_InitStructure);//配置中断触发方式,接收到一个字节,就通知CPU处理USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//NVIC配置其优先级NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;  //中断号NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   //抢占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;      //响应优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    //打开通道给NVIC管理NVIC_Init(&NVIC_InitStructure);//使能USART1工作USART_Cmd(USART3, ENABLE);}

主函数代码

//通过usart3串口发送数据给pc端
void usart3_send_str(char *str)
{char *p = str;while(*p!='\0'){/* 发送一个字节 */USART_SendData(USART3,*p);/* 等待发送完毕 */while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) == RESET);p++;}}int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//抢占优先级0~3,支持4级!//响应优先级0~3,支持4级!key_init();Led_init();usart1_init(115200);usart3_init(9600);usart3_send_str("AT+NAMETWen\r\n");while(1){}
}void USART3_IRQHandler(void)
{uint8_t d;if(USART_GetITStatus(USART3,USART_IT_RXNE) == SET){d = USART_ReceiveData(USART3);if(d == '1')PFout(10)=0;if(d == 'a')PFout(10)=1;/* 发送一个字节 */USART_SendData(USART1,d);/* 等待发送完毕 */while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);/* 告诉CPU,已经完成接收中断请求,可以响应新的接收中断请求 */USART_ClearITPendingBit(USART3,USART_IT_RXNE);}}

http://www.lryc.cn/news/138914.html

相关文章:

  • [技术杂谈]macOS上todesk无法远程操作鼠标键盘
  • 【C++设计模式】用简单工厂模式实现按汽车重量输出汽车类型
  • 【Ubuntu20.04安装Nvidia驱动、CUDA和CUDNN】
  • [Python进阶] 类的设计模式
  • 设计模式 07 桥接模式
  • linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:使用所有应用和命令的判断
  • 机器学习各算法优缺点汇总
  • 手把手教你部署Jenkins教程,小白也能学会(多图预警)!
  • 一种IDEA疑难杂症的解决办法
  • TikTok小店玩法有哪些?一起来玩转TiKTok!
  • Mongodb 集合插入文档自动生成ObjectId
  • C# .aspx网页获取RFID读卡器HTTP协议提交的访问文件Request获得卡号、机号,Response回应驱动读卡器显示响声
  • Kali Linux 2023.3 发布
  • 如何用Python实现从pdf文件精准抓取数据生成数据库!
  • 科技资讯|苹果Apple Watch新专利,可根据服装、表带更换表盘颜色
  • 猜数游戏-Rust版
  • 从零起步:学习数据结构的完整路径
  • 如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器
  • 【计算机协议】第一章——HTTP协议详解
  • 【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法
  • Matlab 生成一定信噪比的信号
  • [国产MCU]-W801开发实例-定时器
  • 基于 CentOS 7 构建 LVS-DR 群集,配置nginx负载均衡。
  • 大数据——spark一文全知道
  • Linux命令200例:telnet用于远程登录的网络协议(常用)
  • 使用 eBPF 在云中实现网络可观测性
  • linux安装部署gitlab全教程,包含配置中文
  • 软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术
  • 使用ChatGPT构建一个AIML聊天机器人是什么体验
  • [JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)