目录
前言
1. 原理
2. Cubmx配置
3. keil5编写代码
3.1 main.c
3.2 syn6288.c
3.3 syn6288.h
前言
本教程基于stm32f103c8t6最小系统板,hal库开发。
操作简单,讲解直接清楚,旨在让大家少走弯路。
1. 原理
SYN6288就是用到一个串口资源即可,用STM32开发起来不难。
2. Cubmx配置
配置串口3为异步通信模式 ,注意波特率必须是9600。试过了,115200是不行滴。
不用开启串口中断。
3. keil5编写代码
3.1 main.c
/* USER CODE BEGIN 0 */
/**************芯片设置命令*********************/
uint8_t SYN_StopCom[] = {0xFD, 0X00, 0X02, 0X02, 0XFD}; //停止合成
uint8_t SYN_SuspendCom[] = {0XFD, 0X00, 0X02, 0X03, 0XFC}; //暂停合成
uint8_t SYN_RecoverCom[] = {0XFD, 0X00, 0X02, 0X04, 0XFB}; //恢复合成
uint8_t SYN_ChackCom[] = {0XFD, 0X00, 0X02, 0X21, 0XDE}; //状态查询
uint8_t SYN_PowerDownCom[] = {0XFD, 0X00, 0X02, 0X88, 0X77}; //进入POWER DOWN 状态命令
/* USER CODE END 0 */
/* USER CODE BEGIN 3 */
//选择背景音乐2。(0:无背景音乐 1-15:背景音乐可选)
//m[0~16]:0背景音乐为静音,16背景音乐音量最大
//v[0~16]:0朗读音量为静音,16朗读音量最大
//t[0~5]:0朗读语速最慢,5朗读语速最快
//其他不常用功能请参考数据手册
SYN_FrameInfo(2, "[v7][m1][t5]欢迎使用");
HAL_Delay(1000);
HAL_Delay(1000);
}
/* USER CODE END 3 */
3.2 syn6288.c
#include "syn6288.h"
#include "usart.h"
#include "string.h"
//Music:选择背景音乐。0:无背景音乐,1~15:选择背景音乐
void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata)
{
/****************需要发送的文本**********************************/
unsigned char Frame_Info[50];
unsigned char HZ_Length;
unsigned char ecc = 0; //定义校验字节
unsigned int i = 0;
HZ_Length = strlen((char*)HZdata); //需要发送文本的长度
/*****************帧固定配置信息**************************************/
Frame_Info[0] = 0xFD ; //构造帧头FD
Frame_Info[1] = 0x00 ; //构造数据区长度的高字节
Frame_Info[2] = HZ_Length + 3; //构造数据区长度的低字节
Frame_Info[3] = 0x01 ; //构造命令字:合成播放命令
Frame_Info[4] = 0x01 | Music << 4 ; //构造命令参数:背景音乐设定
/*******************校验码计算***************************************/
for(i = 0; i < 5; i++) //依次发送构造好的5个帧头字节
{
ecc = ecc ^ (Frame_Info[i]); //对发送的字节进行异或校验
}
for(i = 0; i < HZ_Length; i++) //依次发送待合成的文本数据
{
ecc = ecc ^ (HZdata[i]); //对发送的字节进行异或校验
}
/*******************发送帧信息***************************************/
memcpy(&Frame_Info[5], HZdata, HZ_Length);
Frame_Info[5 + HZ_Length] = ecc;
HAL_UART_Transmit(&huart3,Frame_Info,5 + HZ_Length + 1,10000);
//USART3_SendString(Frame_Info, 5 + HZ_Length + 1);
}
/***********************************************************
* 名 称: YS_SYN_Set(u8 *Info_data)
* 功 能: 主函数 程序入口
* 入口参数: *Info_data:固定的配置信息变量
* 出口参数:
* 说 明:本函数用于配置,停止合成、暂停合成等设置 ,默认波特率9600bps。
* 调用方法:通过调用已经定义的相关数组进行配置。
**********************************************************/
void YS_SYN_Set(uint8_t *Info_data)
{
uint8_t Com_Len;
Com_Len = strlen((char*)Info_data);
HAL_UART_Transmit(&huart3,Info_data,Com_Len,10000);
// USART3_SendString(Info_data, Com_Len);
}
3.3 syn6288.h
#ifndef __SYN6288_H
#define __SYN6288_H
#include "stm32f1xx_hal.h"
void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata);
void YS_SYN_Set(uint8_t *Info_data);
#endif
以上就是STM32驱动syn6288的HAL库版本的代码,全部按我这个操作100%一次驱动syn6288。
码字不易,希望喜欢的小伙伴别忘了点赞+收藏+关注,你们的肯定就是我创作的动力。文章来源:https://uudwc.com/A/Ogn9
欢迎大家积极交流,本文未经允许谢绝转载!!!
文章来源地址https://uudwc.com/A/Ogn9