stm32 之20.HC-06蓝牙模块

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

直接配置usart3串口协议

cs 复制代码
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);
	
	//由于引脚支持很多功能,需要指定该引脚的功能,当前要制定支持USART1
	
	GPIO_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);
	
	
	
}

主函数代码

cs 复制代码
//通过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);
		
	}

}
相关推荐
wuyk5556 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
恒锐丰-罗生7 小时前
国产 H 桥驱动 SS6289|18V/4A 有刷电机驱动芯片性与应用分析 内置采样 + 多保护,门锁 / 机器人优选器件
驱动开发·嵌入式硬件·硬件工程
zcmodeltech11 小时前
工程机械与矿山机械沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的露天开采-井下掘进-智慧矿山全场景联动方案
数据库·stm32·单片机·嵌入式硬件·制造·多分类
云泽80812 小时前
深入浅出 STM32(十五):多通道GPIO驱动的软件抽象与实现
stm32·单片机·嵌入式硬件
嵌入式阿蔡12 小时前
OTA 实战五(收官):量产落地 Checklist —— 版本号 / 防回滚 / 灰度 / 断点续传
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
碧海银沙音频科技研究院14 小时前
基于杰理AC7016C的GTCRN门控卷积神经网络语音增强方法
人工智能·嵌入式硬件·语音识别
ACP广源盛1392462567314 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 大模型私有化部署中 DP 重定时器 GSV6155 的硬件链路价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源
遇雪长安15 小时前
STM32_BOOT未引出_串口升级系统Bootloader方案
stm32·单片机·嵌入式硬件·bootloader
dcdannycheung15 小时前
【无标题】
嵌入式硬件
自小吃多15 小时前
Capture软件原理图添加元器件笔记
笔记·嵌入式硬件