asrpro2.0天问语音模块搭配STM32(STM32F103c8t6)-杨桃电子开发板

这里写自定义目录标题

asrpro2.0天问语音模块搭配STM32(STM32F103c8t6)-杨桃电子开发板

你好! 这是 asrpro2.0天问语音模块搭配STM32(STM32F103c8t6)-杨桃电子开发板手把手

第一步:修改杨桃电子一号板的电路

就是按照杨桃电子连接仿真器JTAG那个视频里面的开发板的模样把跳线帽全部拆了,不要连接
可以去B战看视频
如何你没有这个板子只有一个stm32f103c8t6的话那就更棒了

直接用杜邦线直接连接

用PB5和PB6直接和电脑通信
目的是干什么呢:看看这个模块是否正常

  1. 接下来就是单片机和电脑的串口通信了
  2. 这个杨桃电子开发板已经提供好了,估计买最小系统板的时候也应该有实例历程,测测板子的串口通信是正常
  3. 如果两个都OK,那就很好办了

接下来就是硬件接线了

语音模块GND 杜邦线连接单片机GND
语音模块PB5连接单片机PB11
语音模块PB6连接单片机PB10

好!!!!以上这就是硬件连接部分了

接下来应该就是代码了

接下来就是杨桃电子提供的代码了

作为参考

C 复制代码
/*********************************************************************************************
模板制作:  杜洋工作室/洋桃电子
程序名:	USART串口控制程序
编写人:	杜洋	
编写时间:	2018年1月12日
硬件支持:	STM32F103C8   外部晶振8MHz RCC函数设置主频72MHz   

修改日志:  
1-	
	
							
说明:
 # 本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。
 # 可根据自己的需要增加或删减。

*********************************************************************************************/
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
#include "usart.h"

extern u8 Res;  //这是新增加的

int main (void){//主程序
	u8 a;
	//初始化程序
	RCC_Configuration(); //时钟设置
	LED_Init();//LED初始化
	KEY_Init();//按键初始化
	BUZZER_Init();//蜂鸣器初始化
	USART1_Init(9600); //串口初始化(参数是波特率)
	USART3_Init(9600); //串口初始化(参数是波特率)

	//主循环
	while(1){

		//查询方式接收
		if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET){  //查询串口待处理标志位
			a =USART_ReceiveData(USART1);//读取接收到的数据
			switch (a){
				case '0':
					GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED控制
					printf("%c:LED1 OFF ",a); //
					break;
				case '1':
					GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED控制
					printf("%c:LED1 ON ",a); //
					break;
				case '2':
					BUZZER_BEEP1(); //蜂鸣一声
					printf("%c:BUZZER ",a); //把收到的数据发送回电脑
					break;
				default:
					break;
			}		  
		}
		
		switch(Res)  //这也是自己加的
		{
			    case '0':
					GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED控制
					printf("%c:LED1 OFF ",a); //
					break;
				case '1':
					GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED控制
					printf("%c:LED1 ON ",a); //
					break;
				case '2':
					BUZZER_BEEP1(); //蜂鸣一声
					printf("%c:BUZZER ",a); //把收到的数据发送回电脑
					break;
				default:
					break;
		}

		//按键控制
		if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时20ms去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
				printf("KEY1 "); //
			}
		}		 
		if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时20ms去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
				printf("KEY2 "); //
			}
		}		 

//      delay_ms(1000); //延时
	}
}


/*********************************************************************************************
 * 杜洋工作室 www.DoYoung.net
 * 洋桃电子 www.DoYoung.net/YT 
*********************************************************************************************/
/*

【变量定义】
u32     a; //定义32位无符号变量a
u16     a; //定义16位无符号变量a
u8     a; //定义8位无符号变量a
vu32     a; //定义易变的32位无符号变量a
vu16     a; //定义易变的 16位无符号变量a
vu8     a; //定义易变的 8位无符号变量a
uc32     a; //定义只读的32位无符号变量a
uc16     a; //定义只读 的16位无符号变量a
uc8     a; //定义只读 的8位无符号变量a

#define ONE  1   //宏定义

delay_us(1); //延时1微秒
delay_ms(1); //延时1毫秒
delay_s(1); //延时1秒

*/

然后就是usart.h

C 复制代码
//不使用某个串口时要禁止此串口,以减少编译量
#define EN_USART1 			1		//使能(1)/禁止(0)串口1
#define EN_USART2 			0		//使能(1)/禁止(0)串口2
#define EN_USART3 			1		//使能(1)/禁止(0)串口3

这里使用了串口1和串口3

C 复制代码
//串口3中断服务程序(固定的函数名不能修改)
void USART3_IRQHandler(void){ 	
    Res = USART_ReceiveData(USART3);
} 

大概思路就是串口3利用中断获得模块的返回值也就是字符串 1 和 0,
在主函数中对res进行判断是关灯还是开灯

串口一就还是那个历程完成串口控制功能

大概就是这样,感谢你能看到这里

也是为了防止以后遗忘,偶尔可以回来翻翻

相关推荐
传感器与混合集成电路1 小时前
210℃与175℃高温存储器选型研究:LHM256MB与LDMF4GA-H架构与可靠性对比(上)
嵌入式硬件·能源
时光找茬1 小时前
【瑞萨AI挑战赛-FPB-RA6E2】+ 从零开始:FPB-RA6E2 开箱测评与 e2 studio 环境配置
c++·单片机·边缘计算
17(无规则自律)2 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
@good_good_study3 小时前
FreeRTOS内存管理
单片机
Hello_Embed3 小时前
libmodbus 移植 STM32(基础篇)
笔记·stm32·单片机·学习·modbus
qq_397562314 小时前
QT工程 , 生成别的电脑运行的exe程序
嵌入式硬件·qt
qqssss121dfd6 小时前
STM32H750XBH6的ETH模块移植LWIP
网络·stm32·嵌入式硬件
想放学的刺客7 小时前
单片机嵌入式试题(第27期)设计可移植、可配置的外设驱动框架的关键要点
c语言·stm32·单片机·嵌入式硬件·物联网
天昊吖7 小时前
stc8H启用DMA发送后 卡住【踩坑日志】
单片机
李永奉8 小时前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别