
基于STM32F030+FT1610FF1高精度超声波测距模块测距教程及参考程序等开源分享 资料下载见附件,电脑登入 微信公众号:游名开源 硬件说明: 2脚、3脚:需要接4.7到10K上拉电阻到3.3V或5V电源 特性: 极简的设计; 极轻的重量;5 r! c) ]0 L1 x* a7 z 极高的测量灵敏度;# v& C# W |- g" t1 p) ]- c 极低的消耗电流; 接口ESD保护; 偏捷的安装及使用方式;- T; I# S6 E$ C' R+ o 有效测量距离3cm-1.5m(其它距离范围可定制); 支持3到5V宽电压,默认采用IO通信方式(默认IO通讯),接口兼容IIC、UART通信、485通信; ( u+ P. s, e b' H* n |
STM32F030C8T6+DRV8701+磁隔离大功率直流电机驱动器制作
STM32固件库分享,超全系列整理
STM32F0F1F4内部flash擦写时间和寿命
分享STM32F051中文参考手册(重制书签版)
STM32F0 IIC slave mode
三创电子(Tcreate)-STM32F030调试之I2C篇
基于STM32F0的FOC5.2库PMSM驱动:程序+原理图+BOM等全部开源分享
【MCU实战经验】+STM32F030的步进电机加减速
【管管推荐】STM32经验分享篇
三创电子(Tcreate)-STM32F030核心板代码
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)8 ?, D6 I+ |2 ~4 H6 k
{- s& [4 l; w$ Q
if((TIM3CH2_CAPTURE_STA&0X80)==0); k Z; Q: }4 l: V" F) x7 C
{
if(TIM3CH2_CAPTURE_STA&0X40) 9 w& d& |( C3 Q! s K" V! `5 b( {) E
{
TIM3CH2_CAPTURE_STA|=0X80;
TIM3CH2_CAPTURE_VAL=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);
long long temp=0;% J- ~/ M y2 P$ I! ?
float distance=0.0;
temp=TIM3CH2_CAPTURE_STA&0X3F; * w3 o6 j: I+ h* P' B' m2 D0 W
temp*=0XFFFF; ! Z3 S' a/ M* s
temp+=TIM3CH2_CAPTURE_VAL; ; v9 U c9 I d1 ^
temp=(temp*100)/58;
distance=(float)temp/100;
printf("Goal distence:%.2lf cm\r\n",distance);
__HAL_TIM_DISABLE(&htim3);
}: N1 p- _$ l; {. x! h, K; k9 D
else - t0 {( x3 R3 c
{
TIM3CH2_CAPTURE_STA=0;
TIM3CH2_CAPTURE_VAL=0;
TIM3CH2_CAPTURE_STA|=0X40; 9 s, j: L+ n9 Q' O. u' C
__HAL_TIM_DISABLE(&htim3);
__HAL_TIM_SET_COUNTER(&htim3,0);
TIM_RESET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2);
TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2, TIM_ICPOLARITY_FALLING);
}
}: I( u8 ^7 t: e
}
int main(void)
{/ n( m7 Z# Q- U
! E/ y3 ]% y# u
HAL_Init();' N- u6 @* V3 R; W. T8 \
SystemClock_Config();
MX_GPIO_Init();6 K( w: d. j" L2 ?4 y9 n9 m
MX_DMA_Init(); y" v, w8 {1 f! r/ [; a- Q9 j6 p
MX_USART2_UART_Init();
MX_TIM3_Init();" O$ a5 U* a5 k; Q' x; ]- b* A+ g g
/* USER CODE BEGIN 2 */' r' p1 l: {$ A9 u
__HAL_TIM_ENABLE_IT(&htim3,TIM_IT_UPDATE);' [" i$ L& I8 g( w. @
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
while (1)! ~1 x& \- K* a, U4 h; c* l
{
Measure_Start();
if(TIM3CH2_CAPTURE_STA&0X80) 6 @ ?' }7 d; ?7 }
{, D4 z1 g9 r/ |# Y8 U
__HAL_TIM_SET_COUNTER(&htim3,0);
TIM_RESET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2); 5 s, _$ t6 j6 D
TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2,TIM_ICPOLARITY_RISING);
__HAL_TIM_ENABLE(&htim3);
TIM3CH2_CAPTURE_STA=0;
}
HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);; l: Q. g5 |0 y! w, r
HAL_Delay(1000);
}
}) v a5 a/ I4 \2 s7 G" V
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)3 u8 w! u0 e# _
{0 L4 I @, F h' \+ K* n
if((TIM3CH2_CAPTURE_STA&0X80)==0)8 E# e5 B: M8 X2 P! _# ^* z+ {
{
if(TIM3CH2_CAPTURE_STA&0X40)
{# G$ S+ d+ R5 n! g8 y* }/ @# I
if((TIM3CH2_CAPTURE_STA&0X3F)==0X3F) h' b- ]* R" B: O# z. F6 W* ~
{3 Z* D* c2 o8 X* U& a' p
TIM3CH2_CAPTURE_STA|=0X80;
TIM3CH2_CAPTURE_VAL=0XFFFF;) r" x& d& U3 }% p p( d% o- w* u
}& ^7 o8 W3 y+ _ i0 N9 w9 K. L# r
else TIM3CH2_CAPTURE_STA++;
}
} ! U3 F, t" q4 s
}
NUC_LEO-DG-------------- FT1610FF1
PB3------------------------------T/SDA/TX
PB5------------------------------E/SCL/RX
5V/3V----------------------------VCC) m, {5 W7 n) a, ^: k( g' l" ]) D
GND-----------------------------GND
! c( e2 M; Q4 A
然后再NVICSetings中选上TIM3 global interrupt,入下图:
全局变量:
uint8_t TIM3CH2_CAPTURE_STA=0; / `9 G) f0 R3 s9 { H, H
uint32_t TIM3CH2_CAPTURE_VAL;: ~/ a2 W6 t T/ _
int fputc(int ch,FILE *f)
{
while(0==(USART2->ISR&0x40));
USART2->TDR=ch;
return ch;0 ~. |! t9 U% R' C P7 I
}- Q7 ~' |. g* p! o h7 {
void Measure_Start(void)
{( ?8 {, F! T/ Y9 E, R1 j3 v- z
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
HAL_Delay(1);% W- w' @0 [! W& e ^# k
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
}7 J4 p! w8 e4 r6 n O