你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】实战项目 STM32cubeMX配置蓝牙模块

[复制链接]
STMCU小助手 发布时间:2022-5-22 22:00
前言- b. s1 U3 l' q  B2 j" ~6 T# E! u5 Z
本篇文章带大家了解并学会使用蓝牙模块( q! G' w' ?6 |% c* u: H
. J$ o/ Z* N3 _: L' v& q; W
一、蓝牙模块介绍
2 i% V$ q. b3 J/ I1 V) g/ S5 t% X$ Y
JDY31蓝牙模块6 N4 D; t: X" u
}%SOFGNG0TH516O7)E0M`O1.png + F8 b' F0 _9 C' [8 k! n* v
6 B) @; D% m2 D5 z( s0 r7 o* F! p4 S
JDY-31 蓝牙基于蓝牙 3.0 SPP 设计,这样可以支持 Windows、Linux、android 数据透传,3 h' s) B7 g9 ~, Y" t
工作频段 2.4GHZ,调制方式 GFSK,最大发射功率 8db,最大发射距离 30 米,支持用户通过1 I/ W; X, H7 I2 G5 P
AT 命令修改设备名、波特率等指令,方便快捷使用灵活。
5 D' ^2 w3 T5 K) P/ H$ Q; |- |6 _7 j; K
蓝牙接线方式; }2 S. [9 m: K, s4 f- Y
VCC-3.3V  z6 I) K' B! L& C( R
GND-GND9 c& o+ |. E9 \5 q; M
TXD-RXD1 s- u" a) x% I" s+ H0 }) Z
RXD-TXD+ e$ i7 G* C5 S  X

+ S2 G' k  r& n% `二、cubeMX配置及代码解析2 T6 f1 B! `# T& n- R: L9 B
1.cubeMX配置
0 n  C4 T- m% W5 d! q
1.选择型号
/ t( o! B3 B: [& A0 g
% h! }0 b1 G+ e 7JO%]6DR917`EC83RMNJ.png
, e& w9 k3 u$ z! B- {( K* s; \7 N' l# N. d* {' p- `
2.设置晶振
7 F! A* n' _( v& T
" A1 T3 l  F. O6 ]2 g E`Q01}F%3NM)@Z]JJ`[GSE5.png 0 R9 p; u8 l. }+ F" B- g

9 |( `* m  x4 L, h0 p6 j, }$ K3.开启串口中断和设置波特率; Z2 W9 U1 ?9 |8 T% T- r1 B) {* ]& ?
这里选择的是串口3大家根据自己的接线选择串口号
1 ?  M& e" r) B6 h! ?
& X0 o* \( H, T  R S450~5BLG[FYEM5IXB%8_X0.png + V- p& W) p2 _; j+ ^

  f+ {/ V8 L/ ~) X9 e- _ G9PR_31P}}KK{L@SG4S4W.png
3 F3 a/ p1 X* F8 k( Q+ s7 m! a; w+ y, Y: d  \
4.设置时钟树
# K+ }( O0 x1 Q- V/ t  S* j! ]9 b# m3 q
G)L]_F@[(@O~)GZS[UZEXGC.png
$ X! T* m% o1 L- U, k
' s. p& ?, A% H( @4 d- `8 o5.设置一个灯用来检测蓝牙功能
2 ]+ q2 g: M+ |2 f  x
8 m% T5 b& S6 _: w8 r) F% Y+ ` JUPMKV@W(BMU]VDYM~HGC.png ) B  |: m* Z" A9 {

9 t  A* m1 r0 @+ I5 G+ B( y6.创建工程
9 i' k" {/ [8 i  N( Z0 R9 c) v# M. P$ A7 j# L% l
[1HZ}4O95}SF$(DAZB)W~KS.png
" X( M8 G! Y) ^
) d  O3 U. _% c' ?: C2.代码解析9 _. Z  `7 A$ t* {- |, t/ _) D3 J
蓝牙大家可能会觉得很高大上其实不然他和串口的使用方法是完全一样的,
) R2 F( ?( p$ @  B下面就给大家讲解蓝牙代码的编写。6 Y' |- m  P+ ^3 t
8 G( }1 i( R0 c* ]- ~6 S
  1. //灯LED1的IO定义
    4 w; v$ `; J2 D5 R/ k; n
  2. #define LED1_RESET() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET) //设置LED1低电平: J7 V# W* ^1 b
  3. #define LED1_SET() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET) //设置LED1高电平
    / K# E4 g  K$ z& O" {! a

  4. ! g3 F4 F5 I9 s! S# K/ u! T  s

  5. 6 G6 b5 x, E( d, C0 S2 I
  6. u8 RX_dat=0;//接收变量
    1 w" x8 i2 M5 n
  7. u8 TX[]="Hello";+ p# i+ a4 @1 v5 }8 J
  8. ; |  z: }3 d1 _$ v
  9. //回调函数, C4 q4 B* G; W' n, g
  10. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)8 {; H, X6 e! P2 m* g! l' Z6 W
  11. {
    1 J+ |' O; {3 |3 |8 m+ M" B
  12.   if(huart->Instance == USART3)4 ^+ f# J* J2 F/ t% V
  13.   {
    & g; d0 G' B9 [1 R! V; C  J
  14.     if(RX_dat==0xa1); ^6 w' D4 \4 `( `
  15.     {
    3 L) R; ]( b: [9 h5 ~
  16.        LED1_SET();
    1 E. U; V. m" e& x$ J7 v6 I
  17.       HAL_UART_Receive_IT(&huart3,&RX_dat,1);//启动接收函数
    % D% R9 u1 |9 u4 |9 t; q3 V) P
  18.     }. V2 ~! X! c  W" E
  19.     else if(RX_dat==0xa2)! X$ L3 W- n0 U3 N
  20.     {( L$ _' @. D3 N' s( l
  21.       LED1_RESET();4 C' l" ], W- b* r$ T- D" Q
  22.       HAL_UART_Receive_IT(&huart3,&RX_dat,1);//启动接收函数7 i, e* d* d) |/ a- t% J1 H
  23.     }2 R) [. s/ L& A! p
  24.   }
    8 A9 F  j2 Q0 z4 u) P6 ]$ g
  25. }; }( c: M+ v, f3 J
  26. ( E+ i+ F' Q6 {$ g: A: r$ c
  27. HAL_UART_Transmit(&huart3,TX,sizeof(TX),10000);//开机发送Hello& n# N9 d& `$ X2 g7 b/ O

  28. 4 N4 c8 v1 Z# y4 x  R
  29. / s+ ]  t. _1 |# U0 \" I
  30. while(1)+ F0 |& h7 s4 c+ |, i9 @/ u0 ]1 i
  31. {/ Q, u/ q2 @: V  i
  32.         HAL_UART_Receive_IT(&huart3,&RX_dat,1);3 P  x' S# q" d9 K0 |& F! H8 @
  33. }
    9 V$ Z, ]1 c8 e, I$ w
复制代码

* O0 `/ ]3 {" C$ z总结' ^7 G" ^0 Z+ p* S; H5 i
蓝牙大家不用觉得可怕使用起来和串口是一样的。) Q* S* p2 ]5 a- J, b2 s
1 C" j/ |/ e, M, f3 [7 A0 h
9 ^8 w& z5 d! E6 c
收藏 评论0 发布时间:2022-5-22 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版