当前位置:   article > 正文

STM32使用ASR01语音播报模块

asr01

这里使用的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. int main(void)
  8. {
  9. vu8 k=0;
  10. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择第二组
  11. led_init();
  12. beep_init();
  13. key_init();
  14. delay_init();
  15. usat2_init();
  16. led0=1;
  17. led1=1;
  18. while(1)
  19. {
  20. if(USART_ReceiveData(USART1)=='A')led1=0;
  21. if(USART_ReceiveData(USART1)==2)led1=1;
  22. if(USART_ReceiveData(USART1)==5)BEEP =1;
  23. if(USART_ReceiveData(USART1)==6)BEEP =0;
  24. k=ks(0);
  25. if(k)
  26. {
  27. switch(k)
  28. {
  29. case sup:led0=!led0;USART_SendData(USART1,0x01);break;
  30. case s0:USART_SendData(USART1,0x04);led0=!led0;led1=!led1;break;
  31. case s1:USART_SendData(USART1,0x02);led1=!led1;break;
  32. case s2:USART_SendData(USART1,0x03);led1=!led1;break;
  33. }
  34. }
  35. else delay_ms(10);
  36. }
  37. }

Usart.c

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

Usart.h

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/513041
推荐阅读
相关标签
  

闽ICP备14008679号