• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

STM32使用ASR01语音播报模块

武飞扬头像
嵌入式学不会不改名
帮助1

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

先下载天问block软件

点击这里下载天问block

 选上设备:

学新通

 添加扩展:学新通

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

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

学新通

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

学新通

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

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

main.c

  1.  
    #include "stm32f10x.h"
  2.  
    #include "led.h"
  3.  
    #include "delay.h"
  4.  
    #include "beep.h"
  5.  
    #include "key.h"
  6.  
    #include "Usart.h"
  7.  
     
  8.  
    int main(void)
  9.  
    {
  10.  
    vu8 k=0;
  11.  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择第二组
  12.  
    led_init();
  13.  
    beep_init();
  14.  
    key_init();
  15.  
    delay_init();
  16.  
    usat2_init();
  17.  
    led0=1;
  18.  
    led1=1;
  19.  
    while(1)
  20.  
    {
  21.  
    if(USART_ReceiveData(USART1)=='A')led1=0;
  22.  
    if(USART_ReceiveData(USART1)==2)led1=1;
  23.  
    if(USART_ReceiveData(USART1)==5)BEEP =1;
  24.  
    if(USART_ReceiveData(USART1)==6)BEEP =0;
  25.  
     
  26.  
    k=ks(0);
  27.  
    if(k)
  28.  
    {
  29.  
    switch(k)
  30.  
    {
  31.  
    case sup:led0=!led0;USART_SendData(USART1,0x01);break;
  32.  
    case s0:USART_SendData(USART1,0x04);led0=!led0;led1=!led1;break;
  33.  
    case s1:USART_SendData(USART1,0x02);led1=!led1;break;
  34.  
    case s2:USART_SendData(USART1,0x03);led1=!led1;break;
  35.  
     
  36.  
    }
  37.  
    }
  38.  
    else delay_ms(10);
  39.  
    }
  40.  
    }
  41.  
     
学新通

Usart.c

  1.  
    #include "Usart.h"
  2.  
     
  3.  
    void usat2_init(void)
  4.  
    {
  5.  
    GPIO_InitTypeDef uart;
  6.  
    USART_InitTypeDef uart1;
  7.  
    NVIC_InitTypeDef uart2;
  8.  
     
  9.  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能相应时钟
  10.  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //串口时钟
  11.  
     
  12.  
    uart.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
  13.  
    uart.GPIO_Pin=GPIO_Pin_9;//输出引脚
  14.  
    uart.GPIO_Speed=GPIO_Speed_10MHz;
  15.  
    GPIO_Init(GPIOA,&uart);
  16.  
     
  17.  
    uart.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
  18.  
    uart.GPIO_Pin=GPIO_Pin_10;
  19.  
    uart.GPIO_Speed=GPIO_Speed_10MHz;
  20.  
    GPIO_Init(GPIOA,&uart);//模式设置
  21.  
     
  22.  
    uart1.USART_BaudRate=9600;//比特率
  23.  
    uart1.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//不使用yingjianliu
  24.  
    uart1.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//使能发送与接收
  25.  
    uart1.USART_Parity=USART_Parity_No;//奇偶校验
  26.  
    uart1.USART_StopBits=USART_StopBits_1;//停止位
  27.  
    uart1.USART_WordLength=USART_WordLength_8b;//字长
  28.  
    USART_Init(USART1,&uart1);//初始化串口,并进行配置
  29.  
     
  30.  
     
  31.  
    USART_Cmd(USART1,ENABLE);//使能串口
  32.  
    //以上为串口
  33.  
     
  34.  
    //之后为中断
  35.  
    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//(中断使能函数)开启接收中断;串口端选择,方式,使能{EA}
  36.  
     
  37.  
    uart2.NVIC_IRQChannel=USART1_IRQn;
  38.  
    uart2.NVIC_IRQChannelCmd=ENABLE;
  39.  
    uart2.NVIC_IRQChannelPreemptionPriority=1;//抢占优先级
  40.  
    uart2.NVIC_IRQChannelSubPriority=1;//响应优先级
  41.  
    NVIC_Init(&uart2);//NVIC中断优先级
  42.  
     
  43.  
    }
  44.  
     
  45.  
    void USART1_IRQ(void)//中断服务函数
  46.  
    {
  47.  
    u8 res;
  48.  
    if(USART_GetITStatus(USART1,USART_IT_RXNE))
  49.  
    {
  50.  
    res=USART_ReceiveData(USART1);//接收
  51.  
    USART_SendData(USART1,res);//发送
  52.  
    }
  53.  
    }
学新通

Usart.h

  1.  
    #ifndef __chaunkou_h
  2.  
    #define __chaunkou_h
  3.  
    #include "stm32f10x.h"
  4.  
     
  5.  
    void usat2_init(void);
  6.  
    #endif

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgabkeb
系列文章
更多 icon
同类精品
更多 icon
继续加载