这里使用的asr01语音播报模块是模块化编程
先下载天问block软件
点击这里下载天问block
选上设备:
添加扩展:
自己再根据鹿小班模块进行操作进行相关操作,先接上usb数据线
记得先生成模型再去编译下载
发送给单片机通信时只需要vcc gnd 还有tx接上单片机rx,如果想用stm32控制语音模块,可以接线,让asr01读取单片机引脚。
这里提供一套修改好的天问程序模板和stm32f103模板文章来源:https://www.toymoban.com/news/detail-588045.html
链接: 天问模板链接 提取码: ytie文章来源地址https://www.toymoban.com/news/detail-588045.html
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
到了这里,关于STM32使用ASR01语音播报模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!