打印
[应用相关]

STM32控制语音识别SYN6288+合成模块程序YS-LDV7语音识别

[复制链接]
2082|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Diyer2015|  楼主 | 2018-9-25 12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32控制语音识别SYN6288+合成模块程序YS-LDV7语音识别
沙发
Diyer2015|  楼主 | 2018-9-25 12:21 | 只看该作者
#include "stm32f10x.h"
#include <stdio.h>
#include <string.h>
#include  "SYN6288.h"
#define RxBufferSize 10

void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void USART_Configuration(void);
int fputc(int ch, FILE *f);
void delay_nms(u16 time);//延时子程序
extern void SYN_FrameInfo(uint8_t Music,uint8_t *HZdata);

unsigned char RxBuffer[RxBufferSize];
unsigned char CmdBuffer[RxBufferSize];
extern unsigned char Rx_Flag=0;
unsigned char RxCounter=0;
u16 i;

使用特权

评论回复
板凳
Diyer2015|  楼主 | 2018-9-25 12:21 | 只看该作者
int main(void)
{
//USART_ITConfig(USART1, USART_IT_TXE, ENABLE); // 开启发送
RCC_Configuration();
NVIC_Configuration();
GPIO_Configuration();
USART_Configuration();
USART_ClearFlag(USART2,USART_FLAG_TC);//清发送结束位
  serial3_init();
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
//  printf("打开LED灯,请输入LEDON!\n");
//  printf("关闭LED灯,请输入LEDOFF!\n");
//  printf("输入错误的话,LED灯闪烁3次!\n");
GPIO_SetBits(GPIOA,GPIO_Pin_8);//PA8置位,LED1灯灭
memset(CmdBuffer,10,0);
while(1)
{
if (Rx_Flag==1)
{
USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); //关闭接收中断
Rx_Flag=0;
RxCounter=0;
if (strstr(CmdBuffer,"LEDOFF\r\n"))
{
GPIO_SetBits(GPIOA,GPIO_Pin_8);//PA8置位,LED1灯灭
memset(CmdBuffer,10,0);
delay_nms(1000);        
SYN_FrameInfo(0,"灯已经关闭了");
}
else if(strstr(CmdBuffer,"LEDON\r\n"))
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//PA8清零,LED1灯亮
memset(CmdBuffer,10,0);
delay_nms(1000);        
SYN_FrameInfo(0,"灯已经打开了");
}
else
{
for (i=0;i<3;i++)
{
memset(CmdBuffer,10,0);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//PA8清零,LED1灯亮
delay_nms(1000); GPIO_SetBits(GPIOA,GPIO_Pin_8);//PA8置位,LED1灯灭
delay_nms(200);
     }
          }
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); //开启接收中断,接收寄存器不空(RXNE=1)时产生中断
    }
        }
               }

使用特权

评论回复
地板
Diyer2015|  楼主 | 2018-9-25 12:21 | 只看该作者
void RCC_Configuration(void)
{
SystemInit();
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO的时钟,串口属于复用功能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART1的时钟, USART1挂接到APB2上。其他USART2-5挂接到APB1上
//RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
}

使用特权

评论回复
5
Diyer2015|  楼主 | 2018-9-25 12:22 | 只看该作者
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//声明GPIO初始化结构变量。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //配置管脚PA10/USART1_RX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮置输入
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA10
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; //配置管脚PA9/USART1_TX
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //IO口配置为复用输出口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; //配置管脚8
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //IO口配置为推挽输出口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //工作频率50MHz
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA8口
}

使用特权

评论回复
6
Diyer2015|  楼主 | 2018-9-25 12:22 | 只看该作者
void NVIC_Configuration(void) //NVIC配置
{ //配置NVIC相应的优先级位
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //优先级分组1(0:4,0位抢占优先级、4位子优先级)
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //设置串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

使用特权

评论回复
7
Diyer2015|  楼主 | 2018-9-25 12:22 | 只看该作者
void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;
//子优先级为0
//串口中断使能
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //USART_WordLength_8b; //8 位数据
//USART_WordLength_9b; //9 位数据
USART_InitStructure.USART_StopBits = USART_StopBits_1;
//USART_StopBits_1 ;//在帧结尾传输 1 个停止位
//USART_StopBits_0.5;//在帧结尾传输 0.5 个停止位
//USART_StopBits_2 ;//在帧结尾传输 2 个停止位
//USART_StopBits_1.5;//在帧结尾传输 1.5 个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;
//USART_Parity_No ;//奇偶失能
//USART_Parity_Even;//偶模式
//USART_Parity_Odd ;//奇模式
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
//USART_HardwareFlowControl_None; //硬件流控制失能
//USART_HardwareFlowControl_RTS; //发送请求 RTS使能
//USART_HardwareFlowControl_CTS; //清除发送 CTS使能
//USART_HardwareFlowControl_RTS_CTS;//RTS和 CTS使能
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;
//USART_Mode_Tx;//发送使能
//USART_Mode_Rx;//接收使能
USART_Init(USART2, &USART_InitStructure);//初始化串口
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); //开启接收中断,接收寄存器不空(RXNE=1)时产生中断
//USART_ITConfig(USART1, USART_IT_TXE, ENABLE); // 开启发送中断,发送寄存器空(TXE=1)时能产生中断
//串口的发送中断有两个,分别是:
// l发送数据寄存器空中断(TXE)
// l发送完成中断(TC)
USART_Cmd(USART2, ENABLE); //启动USART
}

使用特权

评论回复
8
Diyer2015|  楼主 | 2018-9-25 12:23 | 只看该作者
int fputc(int ch,FILE *f)
{
if(ch=='\n')
{
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
USART_SendData(USART2,'\r');
}
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
USART_SendData(USART2,ch);
return ch;
}

使用特权

评论回复
9
Diyer2015|  楼主 | 2018-9-25 12:23 | 只看该作者
void delay_nms(u16 time)//延时子程序
{ u16 i=0;

while(time--)

{ i=12000; //自己定义
while(i--) ;
}
}

使用特权

评论回复
10
Diyer2015|  楼主 | 2018-9-25 12:23 | 只看该作者
void USART2_IRQHandler(void) //串口1 中断服务程序
{
unsigned int i=0;
if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断接收寄存器是否非空
{//如果接收寄存器非空,说明检测到中断读入
RxBuffer[RxCounter++]=USART_ReceiveData(USART2); // Read one byte from the receive data register
if (RxBuffer[RxCounter-1]=='\n') //如果检测到换行,则设置接收标志为1.
// \n:换行,光标到下行行首;
// \r:回车,光标到本行行首
{
Rx_Flag=1;
for (i=0;i<RxCounter;i++)//把接收到的数据缓存到CmdBuffer中
{
CmdBuffer[i]=RxBuffer[i];
}
CmdBuffer[RxCounter]=0; //发送缓冲区结束符
RxCounter=0;
}
if(RxCounter == RxBufferSize) //如果接收缓冲区满了。
{
USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); //关闭接收中断
Rx_Flag=1;
CmdBuffer[RxCounter]=0; //接收命令缓冲区结束符
RxCounter=0;
}
}
}

使用特权

评论回复
11
labasi| | 2018-10-12 12:43 | 只看该作者
是否还需要录入啊

使用特权

评论回复
12
Diyer2015|  楼主 | 2018-10-12 12:52 | 只看该作者
labasi 发表于 2018-10-12 12:43
是否还需要录入啊

按道理应该需要录入!

使用特权

评论回复
13
xiaoqizi| | 2018-10-12 13:49 | 只看该作者
识别率高不高

使用特权

评论回复
14
MMMMMyyy| | 2021-3-19 10:01 | 只看该作者
请问有这个项目的YS-LDV7的程序吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

1615

帖子

13

粉丝