10 黑幣
本帖最后由 flytohign 于 2020-6-12 15:17 編輯
主要是 單片機(jī)主函數(shù)紅色標(biāo)記處; keil運(yùn)行會(huì)彈出錯(cuò)誤:main.c(61): warning: #167-D: argument of type "char *" is incompatible with parameter of type "u8 *"
LCD_ShowString(30+10*8,150,200,16,16,DistanceChar); //直接送字符顯示函數(shù)
超聲波測(cè)距顯示不正常,顯示不正確并且數(shù)值變換太快
extern u8 TIM5CH1_CAPTURE_STA; //輸入捕獲狀態(tài)
extern u16 TIM5CH1_CAPTURE_VAL; //輸入捕獲值
int main(void)
{
float Distance;
char DistanceChar[16];
u32 temp=0;
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(115200); //串口初始化為115200
LED_Init(); //LED端口初始化
LCD_Init();
Ultra_config(); //超聲波的TRIG端口,GPIOA_1 初始化
TIM5_Cap_Init(0XFFFF,720-1); //以1Mhz的頻率計(jì)數(shù) ,100us
POINT_COLOR=RED; //設(shè)置字體為紅色
LCD_ShowString(30,50,200,16,16,"ELITE STM32");
LCD_ShowString(30,70,200,16,16,"REMOTE TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2015/1/15");
LCD_ShowString(30,130,200,16,16,"TIME:");
LCD_ShowString(30,150,200,16,16,"DISTANCE: cm");
while(1)
{
Ultra_start();
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕獲到了一次上升沿
{
temp=TIM5CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出時(shí)間總和
temp+=TIM5CH1_CAPTURE_VAL;//得到總的高電平時(shí)間
Distance=(float)temp*170/10000;//距離計(jì)算公式:距離=高電平持續(xù)時(shí)間*聲速/2 ,單位:厘米
//即 距離= 高電平持續(xù)時(shí)間*340*100/(2*1000 000) = 高電平持續(xù)時(shí)間*170/10000
LCD_ShowNum(30+6*8,130,temp,3,16); //顯示高電平時(shí)間
sprintf(DistanceChar,"%5.2f",Distance); //浮點(diǎn)數(shù)轉(zhuǎn)換為指定格式的字符串
//printf("HIGH:%d us\r\n",temp);//打印總的高電平時(shí)間
LCD_ShowString(30+10*8,150,200,16,16,DistanceChar); //直接送字符顯示函數(shù)
TIM5CH1_CAPTURE_STA=0;//開啟下一次捕獲
}
}
}
我來(lái)回答