STM32如何使用ASR01语音播报模块

这里使用的asr01语音播报模块是模块化编程

先下载天问block软件

点击这里下载天问block

 选上设备:

 添加扩展:

 

自己再根据鹿小班模块进行操作进行相关操作,先接上usb数据线

记得先生成模型再去编译下载

 

 发送给单片机通信时只需要vcc gnd 还有tx接上单片机rx,如果想用stm32控制语音模块,可以接线,让asr01读取单片机引脚。

这里提供一套修改好的天问程序模板和stm32f103模板

链接: 天问模板链接 提取码: ytie

main.c

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "beep.h"
#include "key.h"
#include "Usart.h"

 int main(void)
 {	
	 vu8 k=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择第二组
	led_init();
	beep_init();
	key_init();
	delay_init();
	usat2_init();
led0=1;
	 led1=1;
	while(1)
	{
		if(USART_ReceiveData(USART1)=='A')led1=0; 
		if(USART_ReceiveData(USART1)==2)led1=1; 
		if(USART_ReceiveData(USART1)==5)BEEP =1;
    if(USART_ReceiveData(USART1)==6)BEEP =0;
		
		k=ks(0); 
		if(k)
		{
			switch(k)
			{
				case sup:led0=!led0;USART_SendData(USART1,0x01);break;
				case s0:USART_SendData(USART1,0x04);led0=!led0;led1=!led1;break;
				case s1:USART_SendData(USART1,0x02);led1=!led1;break;
				case s2:USART_SendData(USART1,0x03);led1=!led1;break;
				
			}
		}
		else delay_ms(10);
	}
 }
 

Usart.c

#include "Usart.h"

void usat2_init(void)
{
	GPIO_InitTypeDef uart;
	USART_InitTypeDef uart1;
	NVIC_InitTypeDef uart2;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能相应时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);	//串口时钟

	uart.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
	uart.GPIO_Pin=GPIO_Pin_9;//输出引脚
	uart.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&uart);

	uart.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
	uart.GPIO_Pin=GPIO_Pin_10;
	uart.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&uart);//模式设置
	
	uart1.USART_BaudRate=9600;//比特率
	uart1.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//不使用yingjianliu
	uart1.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//使能发送与接收
	uart1.USART_Parity=USART_Parity_No;//奇偶校验
	uart1.USART_StopBits=USART_StopBits_1;//停止位
	uart1.USART_WordLength=USART_WordLength_8b;//字长		
	USART_Init(USART1,&uart1);//初始化串口,并进行配置
	
	
	USART_Cmd(USART1,ENABLE);//使能串口
	//以上为串口
	
	//之后为中断
	USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//(中断使能函数)开启接收中断;串口端选择,方式,使能{EA}
	
	uart2.NVIC_IRQChannel=USART1_IRQn;
	uart2.NVIC_IRQChannelCmd=ENABLE;
	uart2.NVIC_IRQChannelPreemptionPriority=1;//抢占优先级
	uart2.NVIC_IRQChannelSubPriority=1;//响应优先级
	NVIC_Init(&uart2);//NVIC中断优先级
	
}

void USART1_IRQ(void)//中断服务函数
{
	u8 res;
	if(USART_GetITStatus(USART1,USART_IT_RXNE))
	{
		res=USART_ReceiveData(USART1);//接收
		USART_SendData(USART1,res);//发送
	}
}

Usart.h

#ifndef __chaunkou_h
#define __chaunkou_h
#include "stm32f10x.h"

void usat2_init(void);
#endif

物联沃分享整理
物联沃-IOTWORD物联网 » STM32如何使用ASR01语音播报模块

发表评论