本帖最后由 flytohign 于 2020-6-12 15:17 編輯
主要是 單片機主函數紅色標記處;keil運行會彈出錯誤: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); //直接送字符顯示函數
超聲波測距顯示不正常,顯示不正確并且數值變換太快
extern u8 TIM5CH1_CAPTURE_STA; //輸入捕獲狀態
extern u16 TIM5CH1_CAPTURE_VAL; //輸入捕獲值
int main(void)
{
float Distance;
char DistanceChar[16];
u32 temp=0;
delay_init(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
uart_init(115200); //串口初始化為115200
LED_Init(); //LED端口初始化
LCD_Init();
Ultra_config(); //超聲波的TRIG端口,GPIOA_1 初始化
TIM5_Cap_Init(0XFFFF,720-1); //以1Mhz的頻率計數 ,100us
POINT_COLOR=RED; //設置字體為紅色
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;//溢出時間總和
temp+=TIM5CH1_CAPTURE_VAL;//得到總的高電平時間
Distance=(float)temp*170/10000;//距離計算公式:距離=高電平持續時間*聲速/2 ,單位:厘米
//即 距離= 高電平持續時間*340*100/(2*1000 000) = 高電平持續時間*170/10000
LCD_ShowNum(30+6*8,130,temp,3,16); //顯示高電平時間
sprintf(DistanceChar,"%5.2f",Distance); //浮點數轉換為指定格式的字符串
//printf("HIGH:%d us\r\n",temp);//打印總的高電平時間
LCD_ShowString(30+10*8,150,200,16,16,DistanceChar); //直接送字符顯示函數
TIM5CH1_CAPTURE_STA=0;//開啟下一次捕獲
}
}
}
|