本帖最后由 diannaodanshi 于 2015-3-29 20:07 编辑
菜鸟一枚,在做一个利用HC-SR04超声波模块测距的小程序。想法就是利用滴答定时器。代码如下:
int main(void)
{ double a;
GPIO_InitTypeDef GPIO_InitStructure;
/* 1us中断一次 */
SysTick_Init();
LED_GPIO_Config();
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
USART1_Config();
printf("\r\n this program show the distance \r\n");
for(;;)
{ a=0;
GPIO_ResetBits(GPIOB,GPIO_Pin_10);
Delay_us(20);
GPIO_SetBits(GPIOB,GPIO_Pin_10);
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0) {
Delay_us(10);
a=a+1;}
printf("\r\n distance %.1f\r\n",a/100000*170*100);
Delay_ms(1000); /* 1s 测试距离一次*/
LED1_TOGGLE;
}
}
但是就测距结果来看,只能通过串口输出3.9,4.1这两个固定的数值。求问大神该程序是哪里的问题,应该如何改正。感激不尽! |