生活随笔
收集整理的這篇文章主要介紹了
TTS语音播报
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本上也是屬于一個串口開發,其基本的指令如下
參考代碼:
//合成語音播報距離distance
void TTS_Vodeodistance(float distance)
{UART3_Init(); //初始化TTS播放u16 num,dpnum;// printf("<G>現在開始測試\n");delay_ms(10); //一定要加延時,確保程序正常進行num = distance;dpnum = (distance-num)*10; delay_ms(10); //一定要加延時,確保TTS語音正常進行printf("<G>前方有障礙,\n");printf("距離障礙\n");printf("%d \n",num);printf(".\n");printf("%d \n",dpnum);printf("厘米\n");delay_ms(10);printf("<G>向左轉\n");
}/****************************************************************/
//初始化函數UART3_Init(),無形參和返回值
/****************************************************************/
void UART3_Init(void)
{//1.設定通信數據位數,此處設定為8位數據位,無校驗位UART3_CR1 = 0x00;//**************************************************//展開UART3_CR1賦值二進制數值為:0000 0000 //含義:R8=0; 接收數據位不存在第9位// T8=0; 發送數據位不存在第9位// UARTD=0; 使能UART功能// M=0; 一個起始位,8個數據位,n個停止位// n取決于UART3_CR1中的STOP[1:0]位// WAKE=0; UART被空閑總線喚醒// PCEN=0: (UART模式)奇偶校驗控制被禁止// PS=0; 偶校驗(校驗功能未啟用)// PIEN=0; 校驗中斷被禁止//*************************************************//2.設定通信停止位位數,此處設定為1位停止位UART3_CR3 = 0x00;//**************************************************//展開UART3_CR1賦值二進制數值為:0000 0000 //含義:保留位=0;必須保持清零// LINEN=0;LIN模式被禁止// STOP=00;配置為“00”,1個停止位// CLKEN、CPOL、CPHA、LBCL這幾位在UART3上不存在//*************************************************//3.配置通信波特率參數,此處配置為9600bps(16MHz頻率下)UART3_BRR2 = 0x03;UART3_BRR1 = 0x68;//4.使能發送和接收功能UART3_CR2 = 0x0C;//**************************************************//展開UART3_CR2賦值二進制數值為:0000 1100 //含義:TIEN=0;發送中斷被禁止// TCIEN=0;發送中斷完成被禁止// RIEN=0;接收中斷被禁止// ILIEN=0;IDLE中斷被禁止// TEN=1;發送功能使能// REN=1;接收功能使能// RWU=0;(UART模式)正常工作模式// PIEN=0;未發送斷開字符//*************************************************
}/****************************************************************/
//發送單字符函數UART3_SendByte(),有形參data,無返回值
/****************************************************************/
void UART3_SendByte(u8 data)
{UART3_SR&=0xBF;//清零發送完成標志位TCUART3_DR=data;//發送數據到UART3數據寄存器//while (!(UART3_SR & 0x80));//【舊版語句,有瑕疵】等待發送完畢//原來的語句是&上了0x80,其實是判斷了TXE位,這種方法不嚴謹,因為//發送數據寄存器空不一定說明發送已經完成了,應該判斷TC位才正確while (!(UART3_SR & 0x40));//【新版語句,推薦】等待發送完畢UART3_SR&=0xBF;//清零發送完成標志位TC
}/****************************************************************/
//發送字符重定向函數putchar(),有形參ch,有返回值
/****************************************************************/
int putchar(int ch)
{ UART3_SendByte((u8)ch);// UART1_SendByte((u8)ch);//將Printf內容發往串口return (ch);
}
總結
以上是生活随笔為你收集整理的TTS语音播报的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。