標(biāo)題:
STM32超聲測(cè)距
[打印本頁(yè)]
作者:
mike_Tang
時(shí)間:
2020-3-4 10:55
標(biāo)題:
STM32超聲測(cè)距
51hei.png
(135.41 KB, 下載次數(shù): 32)
下載附件
2020-3-4 12:34 上傳
附加代碼:
#include "stm32f10x.h"
#include "stm32f10x_tim.h"
#include "misc.h"
#include "eight_segment_display.h"
unsigned char tab[3]={0,0,0};
unsigned char tab1[8]={6,4,1,7,3,6,0,8};
unsigned char tab2[8]={6,4,1,7,3,6,0,4};
u16 overcount=0;
unsigned char flag;
//設(shè)置中斷優(yōu)先級(jí)
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructer;
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructer.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructer.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructer.NVIC_IRQChannel =TIM1_UP_IRQn;
NVIC_InitStructer.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructer);
}
void StartModule(void)
{
int delay=0xFf;
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //開啟發(fā)送腳
while(delay--);
GPIO_SetBits(GPIOA,GPIO_Pin_0);
}
unsigned int Conut(void)
{
float length=0;
u16 tim;
tim = TIM_GetCounter(TIM1);
length=(tim+overcount*1000)/58.0;
TIM1->CNT=0;
overcount = 0; //中斷溢出次數(shù)清零
return (unsigned int)length;
}
/*
@brief 初始化八段數(shù)碼管,并在8個(gè)數(shù)碼管上顯示數(shù)值0~7
@param None
@retval 返回0表示正常結(jié)束
*/
int main(void){
unsigned char i;
int tmp;
int delay1=0xfFf;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructer;
NVIC_Config();
seg_display_init(); //初始化數(shù)碼管
i=0;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
//定時(shí)器TIM2初始化
TIM_DeInit(TIM1);
TIM_TimeBaseInitStructer.TIM_Period = 10000-1; //定時(shí)周期為1000
TIM_TimeBaseInitStructer.TIM_Prescaler = 8-1; //分頻系數(shù)8
TIM_TimeBaseInitStructer.TIM_ClockDivision = TIM_CKD_DIV1; //不分頻
TIM_TimeBaseInitStructer.TIM_CounterMode = TIM_CounterMode_Up;//向上計(jì)數(shù)
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructer);
//開啟更新中斷
TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
//中斷參數(shù)設(shè)置
NVIC_Config();
//關(guān)閉定時(shí)器使能
TIM_Cmd(TIM1,DISABLE);
int delay=0xFFf;
while(delay--);
while(1){
StartModule();
while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9));
TIM_Cmd(TIM1,ENABLE);
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9));
TIM_Cmd(TIM1,DISABLE);
tmp=Conut();
tab[0]=tmp/100;
tab[1]=(tmp%100)/10;
tab[2]=tmp%10;
if(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12))
{
i=0;
delay=0x4f;
while(delay--)
{
set_com_digit(i,tab[i++]);
if(i==3){
i=0;
}
delay1=0x4Ff;
while(delay1--);
close_coms(); //關(guān)閉所有的com口
};
}
else
{
i=0;
delay=0x4f;
while(delay--)
{
set_com_digit(i,tab2[i++]);
if(i==8){
i=0;
}
delay1=0x4Ff;
while(delay1--);
close_coms(); //關(guān)閉所有的com口
};
}
}
//return 0;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1