LD3320为内核是51单片机,LD3320当输入不同的语句通过串口输出相应的代码,利用STM32与51单片机的串口通讯,将代码传输给STM32实现STM32端口控制。. J' } n: o0 B% }+ [. l
LD3320程序与STM32全部程序,自己编写程序。
9 p) d" i$ i0 S, E, m! ]程序代码下载地址 https://download.csdn.net/download/qq_42258981/12261782
" v; E2 x) h9 k8 b6 m' `视频展示
) Y' \ I4 I/ M* c0 nhttps://www.bilibili.com/video/BV1JE411F7mB/0 o) ?" I5 ]5 s$ C6 M
6 U y# y- b. v7 u" ^: y
硬件资源:
8 f5 o- k9 }. a4 P1 b1:PB11(USART3_RX),PB10(USART3_TX),STM32的RXD,DS0,DS1
9 H1 l7 m- D' M* x2:LD3320& @; ]; K# o9 n2 H
; H* w- F0 S* P: g
$ i- L: [! V' r- X实验现象:
+ a& ^5 j; }3 s当说“左侧”DS0亮,DS1灭,串口打印“code is 0”;当说“右侧”DS0灭,DS1灭,串口打印“code is 1”;当说“全开”,DS0与DS1全亮 ,串口打印“code is 2” 。
5 S( N4 S4 p. e& |5 n: H- c" B注意事项:+ q" B; N/ y/ l3 E) Y
1:STM32串口,51串口波特率以及电脑端串口调试助手波特率均为9600。- x/ g. p4 [5 @; N2 f1 h" @
2:51的TX端口与STM32的PB11(USART3_RX)端口连接;51的RX端口不接;STM32的PB10(USART3_TX)端口与STM32的RXD端口连接。" R6 \/ p" b& Q7 Z0 h% `8 s6 F
3:DS0,DS1均为STM32Mini板板上硬件资源。
5 i% G/ I8 ^7 w硬件连接图( b w# Z' {; s2 z7 o5 k
f5 O. n1 ]% {! B3 d
结果演示' J" L- e# D. R
/ Z- }+ c5 W+ G5 L" W# P, q/ D8 m+ h
0 ?; j: T2 {6 U& r% Z8 o2 G) Z, N8 ?/ W' [
51语音程序( U# U. Q. L7 l0 Z& B$ X
添加关键词
5 E! y) {3 J, {# Y% v
: e; R* j- h( `3 |$ J$ E- <font face="微软雅黑" size="3">uint8 LD_AsrAddFixed()- H5 z- D* V. Y
- {
$ W# ^* }1 b9 e - uint8 k, flag;
6 |$ ?8 E2 ^8 z* p7 f2 W - uint8 nAsrAddLength;
5 @9 O3 ]8 u0 J0 s - #define DATE_A 11 /*Êý×é¶þάÊýÖµ*/
6 ~% B7 A9 }- t - #define DATE_B 20 /*Êý×éһάÊýÖµ*/
. r1 ]2 w8 G9 r) ` - uint8 code sRecog[DATE_A][DATE_B] =
0 Y* f# S: u2 Z7 v3 H3 { - {3 @& d2 J2 l: H( Q$ M; D( d3 o2 j
- "xiao long",\
: w2 P: v# d) @( s2 T2 r1 v - "zuo ce",\/ Y2 U! u6 ^& g2 |7 C. i ~
- "you ce",\
+ z1 f3 c; s; w5 y7 h - "quan kai",\
( j5 S8 H/ C @% T: I - };
6 p; w9 j1 Z$ S - </font>
复制代码 与STM32串口通讯程序
/ ?" ]. ]( ?' F+ W6 F) j& H. M- <blockquote><font face="微软雅黑" size="3">void <span style="white-space:pre"> </span>User_handle(uint8 dat)</font>
复制代码 STM32串口3初始化省略,直接上主程序$ h& l' r1 c7 Q5 d
STM32主程序! d9 p, _& C8 j6 C! b
& K; @% u& p3 O& J- <font face="微软雅黑" size="3">int main(void)
# |2 g! g) I, J+ ~- r - {
6 n3 w( F4 G2 o; | - u8 len; _8 e. N1 [9 ~: A- P9 I* x5 J
- u16 times=0;
( ?, X [3 R. d2 x+ G% A) P0 E9 E - u8 get=0;
! {5 K+ F& c; J% y# P - HAL_Init();
; ?/ @0 {' ~9 [. Q. [& t- O8 o5 d - Stm32_Clock_Init(RCC_PLL_MUL9); 4 R' ?7 ]8 w9 h( d
- delay_init(72); ( e* e" p, e$ ?( X
- uart_init(9600);
8 [" e! S: u7 {5 C' K1 h - uart3_init(9600);
" m* P0 h, C* ~; M' m0 E( t6 z - LED_Init(); ( f' b' U8 g' ?
-
( u, N! C+ p% M. S& E - & w' N. G" V' f! b8 E7 G
- while(1)
+ w5 M Y4 ]. @& ^+ \! F* D' F - { , O' R0 X' D4 c* O5 R( r
- if(USART3_RX_STA&0x8000)
4 `8 T, U0 S' H" @' y+ d; M - { 4 t, R' @4 Q' X# ?/ x
- len=USART3_RX_STA&0x3fff;//! ]7 V8 u4 x. D' W/ j
- get=USART3_RX_BUF[0]; printf("\r\n\r\ncode is %d\r\n", get);
5 F( k+ U$ ]- }! M% |7 B& {' R - switch(get)
6 R; i4 k/ ^9 J7 ^6 m5 \ - {
7 u/ ]! t( `* W, W/ d - case 0: {LED0=0;LED1=1;} break;. m/ C. `7 W$ H4 t6 H$ v
- case 1: {LED0=1;LED1=0;} break;
/ G# C( R6 h( z( q - case 2: {LED0=0;LED1=0;} break;, |8 b0 X( O- K( D9 z. C6 K
- default: {LED0=1;LED1=1;}break; ' V9 R# @5 @# ^/ m
- }
) k5 Z% l( \; b- v+ q5 N) a+ O5 F - HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000);
, o6 J9 i- S; ], | - while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET);
- w6 R# @+ O; i" L+ ^/ y - USART3_RX_STA=0;/ S. W$ E( r% J: O& q- A, u y/ P }
- } : e& X, M8 u5 m# ^+ t! R
- }
4 w" Y( z; H# U' {( J& Y% ?+ i, R - }
3 `' z* s: b: s) C* I - </font>
复制代码 , \1 M6 W% e8 q) D7 E6 q0 |: n
: n; q- y# W7 F* R% o' }. \) s! r: g- y+ H" Z) m) O" i; G
|