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

基于Nucleo-F031的激光测距仪

[复制链接]
wenyangzeng 发布时间:2020-12-5 20:32
基于Nucleo-F031的激光测距仪, R1 C  f9 y+ m3 {
    Nucleo-F031麻雀虽小,五脏俱全。用它来驱动ST的VL53L1X激光测距传感器,是一个经济实用的方案。& I$ J5 v: ^7 f! f

2 H: o1 V! S) g) Y8 e NUCLEO.png

8 w2 O, F: B0 B  D* A  K' E& y
% b$ _) w) y: f& ?' A  本方案采用RS232串口通讯方式来驱动VL53L1X。有关VL53L1X的详细资料请参考ST官方:
/ [) n4 Q* n0 U7 i( f8 xhttps://www.stmcu.com.cn/Article ... ode/news/art_id/707' U( g% t7 m+ e

) A3 r2 d0 S+ z$ }( a6 K1 H硬件连接:
! R9 ^( c+ i2 l$ i

7 W; e0 W) ]  {+ Y. u0 M) K+ e 原理图.png & @+ G( q4 C* \1 ^
/ L9 Q4 W0 u/ d; r9 ?
使用Nucleo-F031的PA0、PA3、PA4来驱动OLED显示屏,PA9、PA10是USART1的TXD、RXD。串口波特率9600,8为数据位,1位停止位,无校验。中断方式接收。" s$ Z6 G# H  r3 p9 g5 c

. j. h" b3 j4 y8 D4 H* L) E0 d5 o& X$ w2 H( g/ R4 }
CubeMX的配置:

. D/ @3 A* n; t9 w4 O CUBEMX.png : F! k+ P# k5 f

2 e' k! g5 a- t7 B! Y- ^
" z( o" n5 D5 [$ H  }5 L. ^, `  p运行结果
* n, C* r+ y. W/ D6 U4 [. J

/ C/ m/ b4 d, ~6 e9 n 161908qcsd7czzj39t3j5z.png ) S% @$ q  o: Z3 l# a  Z1 P
: V% N' \* {5 p3 G* a7 d
主要代码:- W. N7 W# w; w6 o- f/ j4 D1 _
  1.   s; h: ~' m+ M0 x% ]! D
  2. int main(void)+ N7 J- O- R# x7 L8 {' e
  3. {
    - [7 ]# U& @5 v. A4 f
  4.   HAL_Init();% m- b# B: O5 @! v" C
  5.   SystemClock_Config();: i" d4 z; p4 e; J" q) u. K9 T  {
  6.   MX_GPIO_Init();# [( D2 w4 t! A5 w! i- `
  7.   MX_USART1_UART_Init();: X3 H( g1 a- @) Y7 ]0 U
  8.   LCD_Init();
    8 V. n8 N* I5 h
  9.   __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
    ; S  o. {" X) Z7 T- j
  10.   __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); ; c. Y9 C" L5 F0 P% r
  11.   __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    $ X1 I( M1 T. W# O* F- Q/ V8 t$ ~
  12.   Tx_buf[0]=0xa5;
    , t; {; u, G5 V8 A) {2 f9 I
  13.   Tx_buf[1]=0x45;* E% V) W* }+ E( y/ r7 {( U3 G2 M
  14.   Tx_buf[2]=0xea;& w$ j8 e# _4 L: U0 T5 D
  15.   HAL_UART_Transmit(&huart1,(uint8_t *)Tx_buf,3,0xffff);0 o! G% v! ?* n0 j
  16.   LCD_Print(20,0,"Nucleo-F031",TYPE16X16,TYPE8X16);3 {' |9 U4 M, }3 X, R
  17.   LCD_Print(30,24,"激光测距",TYPE16X16,TYPE8X16);
    2 X+ b- R/ O$ R4 N) n! ]( s
  18.   Disp_buf[2]='.';4 q4 D; H6 m4 Y) W+ P! H
  19.   Disp_buf[4]=' ';6 l' Y& j' d; K& F  q5 {
  20.   Disp_buf[5]='C';
    % V- V# P$ I& {) I: C" y5 q
  21.   Disp_buf[6]='m';
    8 \+ Q% I& V) S( _4 s! H; P
  22.   Disp_buf[7]='\0';
    " `+ w: |" _0 a$ ?* @$ X- `
  23.   while (1)
    $ T* D. ?8 y1 W: ?
  24.   {
    & _! J4 B. ^& n) i7 m3 W+ j  l
  25.    bcdcode=HEX2BCD(Lenght);3 I2 M4 U7 G9 J) @7 O
  26.    Disp_buf[0]=bcdcode%1000/100+0x30;! k' _+ v# E. t: ]7 l" g* f
  27.    Disp_buf[1]=bcdcode%100/10+0x30;
    , |) [" z+ }' v4 z( g
  28.    Disp_buf[3]=bcdcode%10+0x30;8 h! ?, ~" H9 ]/ K+ b$ [
  29.    LCD_Print(36,48,Disp_buf,TYPE16X16,TYPE8X16);( h2 M1 @; [8 T1 o  S+ Y
  30.    HAL_Delay(200);% L6 o; F* g1 }. \" J% P
  31.   }
    / K  S3 c, p" A, {
  32. }
复制代码
% E# q9 ?7 W& ~  }7 R8 O
中断函数:
  1. void USART1_IRQHandler(void)
    5 r6 G' `4 u5 @6 T* U8 Z
  2. {/ k: D0 _4 o. X# G
  3. if((USART1->ISR & USART_ISR_RXNE) != RESET)        # a9 D$ {" }% [9 E7 [6 z" W
  4.      {
    " P7 ^1 t0 j. X+ V' W7 v# B+ ]. Z
  5.       Rx_buf[RxCount++]=USART1->RDR;
    $ r0 u) U* X# M4 _8 X
  6.      }9 d' {9 Y! X6 g% q' w* }
  7. ; N2 {( v: S6 {$ t5 d
  8.     if(RxCount==8)+ J: p9 o; }# g6 H& A0 e
  9.       {# H8 D+ u' }  W# Y9 T" O6 G
  10.       Lenght=Rx_buf[4]<<8;
    7 r7 O$ m* ]9 V
  11.      Lenght |=Rx_buf[5];
    5 ]! H! h  v- A6 E: r) _9 j3 C! [. N) u
  12.      RxCount=0;       
    5 t! ~5 W1 {  s* I0 p# b; [' q6 i
  13.      }       
    3 B- J7 @3 n  F) ~: t
  14.   HAL_UART_IRQHandler(&huart1);2 y1 F6 C1 m' X0 c% q! I7 y
  15. }
复制代码
4 B. j: K8 j% s, ~2 x. K! s
4 t9 r& s2 ~9 |8 L* |7 B

7 l: \* s% B3 r1 z2 Y) _& H, J, @9 }9 j. p! P8 F

  i" M$ P4 j1 [4 @4 d. p" x2 u( n6 v; ?* L8 @2 K0 Q8 ^
收藏 评论0 发布时间:2020-12-5 20:32

举报

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