本帖最后由 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;//开启下一次捕获
}
}
}
|