LD3320为内核是51单片机,LD3320当输入不同的语句通过串口输出相应的代码,利用STM32与51单片机的串口通讯,将代码传输给STM32实现STM32端口控制。, j- c8 w( S3 J3 h; H, {! m9 D9 P/ k# G
LD3320程序与STM32全部程序,自己编写程序。. }9 ?, c h* l& |) y2 a" C: ]
程序代码下载地址 https://download.csdn.net/download/qq_42258981/12261782
# Z8 ~$ A* s# i- \# K1 k视频展示
. k# K8 ]' T; Q8 o; ~# Bhttps://www.bilibili.com/video/BV1JE411F7mB// Y% W) c2 U9 ]
* h; w% m# [! [4 l硬件资源:' {2 O% R2 b+ M& Y4 W8 T
1:PB11(USART3_RX),PB10(USART3_TX),STM32的RXD,DS0,DS14 E# f( H' \. P* [, s. y
2:LD3320& I( X9 l, ~! `
; D% W! t ^+ @) l% X2 a* J/ h( `& N" b* _9 r6 y
实验现象:; d) p8 p2 [0 x" I' b% @8 j% ^
当说“左侧”DS0亮,DS1灭,串口打印“code is 0”;当说“右侧”DS0灭,DS1灭,串口打印“code is 1”;当说“全开”,DS0与DS1全亮 ,串口打印“code is 2” 。2 n$ I+ J' A6 }6 B6 I# p' N
注意事项:; i* }7 {4 V4 N& c4 O" u8 j
1:STM32串口,51串口波特率以及电脑端串口调试助手波特率均为9600。
! V; d0 j& B; U2:51的TX端口与STM32的PB11(USART3_RX)端口连接;51的RX端口不接;STM32的PB10(USART3_TX)端口与STM32的RXD端口连接。
7 J0 M. E6 E' j. U" M% v- f3:DS0,DS1均为STM32Mini板板上硬件资源。
$ S" l6 e3 o) o硬件连接图
5 G, l3 t2 M( r# t' k/ N
' J$ x' k; ]* g3 l2 p结果演示5 t8 M6 q& n2 \0 @- t; M5 |# Z/ F
" I" ?! P3 ~$ f# I1 m, v. z8 ~* j' c
: O) T: J; H2 L
' V. N1 D6 b8 }, k$ L- g+ I2 _51语音程序
; l: z- l2 R2 P9 Y添加关键词, e) b @! o/ n$ Q4 a' q9 K! C( s
2 R1 G/ d3 c- L. P4 \' I) |7 k- <font face="微软雅黑" size="3">uint8 LD_AsrAddFixed()
/ m: c; v$ }; T& C: L8 ]) d - {* v: p2 |7 B# p1 i5 m1 m7 j
- uint8 k, flag;
, V- b. w f! l# Y0 K4 P6 a - uint8 nAsrAddLength;
. V( \0 ] o2 S* s/ V! b - #define DATE_A 11 /*Êý×é¶þάÊýÖµ*/2 s: A+ f4 p+ D8 {" H
- #define DATE_B 20 /*Êý×éһάÊýÖµ*/" R1 t' C2 r- q8 s7 ~7 e
- uint8 code sRecog[DATE_A][DATE_B] =( [6 Q3 s0 B7 r+ d6 c
- {+ n6 i- p& }/ F2 g
- "xiao long",\
9 I: Z8 H5 Y9 @9 H( L - "zuo ce",\6 N( [$ o% c9 x7 v0 C. Y
- "you ce",\+ ?3 X& Y) D% A/ o
- "quan kai",\ " d4 [4 i& ~$ Z3 h) N/ N
- };
- R& Z) ]. r* b+ ^' f3 ]# |& u - </font>
复制代码 与STM32串口通讯程序
% J8 f8 s8 k, I* x* m- <blockquote><font face="微软雅黑" size="3">void <span style="white-space:pre"> </span>User_handle(uint8 dat)</font>
复制代码 STM32串口3初始化省略,直接上主程序! r5 Z: q$ O0 F& e3 A3 d
STM32主程序
' ~9 l: M: Y- i: H1 r. v9 ?& y) y
! R0 h: f& x, D! c1 S( \; g; L1 ~8 R- <font face="微软雅黑" size="3">int main(void) l! u4 Q! d% Y' [
- { 5 Y0 {( i( d# ?& V; f8 g- \
- u8 len;
; j* G; X0 K% ?6 C1 W - u16 times=0;
! e$ v/ x* A7 T+ c7 i - u8 get=0;
. a7 i5 n3 d& P9 F - HAL_Init();
2 z! o; \0 s+ A, P( J. S - Stm32_Clock_Init(RCC_PLL_MUL9);
* o0 w; M9 M. B5 R0 z" y - delay_init(72); # I6 v3 y/ p. |1 F2 v% T
- uart_init(9600); : g2 m, o7 v7 Q; q
- uart3_init(9600);
7 v' B% J' w6 Q4 x% { e - LED_Init(); % o4 K# M# S- W/ ?' t3 q" X7 Q
-
% ?/ J2 E( W0 x# {: t -
2 I8 X6 O4 ^1 w0 m. D3 j9 i3 M - while(1)
6 w. z1 k' Y# m2 D9 k* X9 ?6 ] - {
& j# y2 I; Q, p6 Y - if(USART3_RX_STA&0x8000)
4 x: v$ n2 _3 K" d - { # j; T+ g& y# `
- len=USART3_RX_STA&0x3fff;//; D. Z2 Y2 \& V+ O4 I, E
- get=USART3_RX_BUF[0]; printf("\r\n\r\ncode is %d\r\n", get);/ z0 [) Q. U8 O3 l a
- switch(get)
4 y: l3 |/ F. c- T - {) e- X, O! O$ S2 Q6 B6 ^+ I% P4 L! W
- case 0: {LED0=0;LED1=1;} break;3 b* U- V$ Y8 _9 X- [7 w
- case 1: {LED0=1;LED1=0;} break;1 B- Y) d" n v: }' q
- case 2: {LED0=0;LED1=0;} break;
/ O, a+ w- \ x# v. { { - default: {LED0=1;LED1=1;}break;
" y( q5 l! c7 i# V( [ - }; ~3 }/ D0 ?6 s7 m
- HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000); + z. i$ p! I) F8 m7 E* y/ r( t* e
- while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET);
: a1 c, B) Z) x/ z! q, \ - USART3_RX_STA=0;1 d6 d0 y! P. U6 q
- }
3 c$ [+ }9 u2 S. ^$ M* p - }
* K9 w7 }3 ?) N9 u9 d8 \& z - }; Q3 R6 G- r0 d' F6 z
- </font>
复制代码 # d1 y$ i8 }" D( T+ Z9 S) ]
6 Q) m% m, J; O$ k
! w1 K3 @5 i' ?0 v, @" I |