赞
踩
LD3320为内核是51单片机,LD3320当输入不同的语句通过串口输出相应的代码,利用STM32与51单片机的串口通讯,将代码传输给STM32实现STM32端口控制。
LD3320程序与STM32全部程序,自己编写程序。
程序代码下载地址https://download.csdn.net/download/qq_42258981/12261782
视频展示
https://www.bilibili.com/video/BV1JE411F7mB/
硬件资源:
1:PB11(USART3_RX),PB10(USART3_TX),STM32的RXD,DS0,DS1
2:LD3320
实验现象:
当说“左侧”DS0亮,DS1灭,串口打印“code is 0”;当说“右侧”DS0灭,DS1灭,串口打印“code is 1”;当说“全开”,DS0与DS1全亮 ,串口打印“code is 2” 。
注意事项:
1:STM32串口,51串口波特率以及电脑端串口调试助手波特率均为9600。
2:51的TX端口与STM32的PB11(USART3_RX)端口连接;51的RX端口不接;STM32的PB10(USART3_TX)端口与STM32的RXD端口连接。
3:DS0,DS1均为STM32Mini板板上硬件资源。
硬件连接图
结果演示
STM32F103RCT语音模块LD3320
51语音程序
添加关键词
uint8 LD_AsrAddFixed()
{
uint8 k, flag;
uint8 nAsrAddLength;
#define DATE_A 11 /*Êý×é¶þάÊýÖµ*/
#define DATE_B 20 /*Êý×éһάÊýÖµ*/
uint8 code sRecog[DATE_A][DATE_B] =
{
"xiao long",\
"zuo ce",\
"you ce",\
"quan kai",\
};
与STM32串口通讯程序
void User_handle(uint8 dat) { if(0==dat) { G0_flag=ENABLE; LED=0; } else if(ENABLE==G0_flag) { G0_flag=DISABLE; LED=1; switch(dat) { case CODE_1: /*left*/ UARTSendByte(0x00); SRD1 = 1; PrintCom("0 Left\r\n"); break; case CODE_2: /*right*/ UARTSendByte(0x01); SRD1 = 0; PrintCom("1 Right\r\n"); break; case CODE_3: /*Turn On*/ UARTSendByte(0x02); SRD2 = 1; PrintCom("2 Turn On\r\n"); break; default:/*text.....*/ break; } } else { PrintCom("come on"); /*text.....*/ } }
STM32串口3初始化省略,直接上主程序
STM32主程序
int main(void) { u8 len; u16 times=0; u8 get=0; HAL_Init(); Stm32_Clock_Init(RCC_PLL_MUL9); delay_init(72); uart_init(9600); uart3_init(9600); LED_Init(); while(1) { if(USART3_RX_STA&0x8000) { len=USART3_RX_STA&0x3fff;// get=USART3_RX_BUF[0]; printf("\r\n\r\ncode is %d\r\n", get); switch(get) { case 0: {LED0=0;LED1=1;} break; case 1: {LED0=1;LED1=0;} break; case 2: {LED0=0;LED1=0;} break; default: {LED0=1;LED1=1;}break; } HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000); while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET); USART3_RX_STA=0; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。