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;//不使用yingjianliuuart1.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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
