[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]#include "stm32f10x.h"
#include "sound.h"
#include "lcd.h"
#include "usart.h"
#include "delay.h"
#include "tim.h"
int main(void)
{
SystemInit();
delay_init();
uart_init(9600);
TIM3_Init(7199,4999);
LCD_Init();
Sound_Init();
POINT_COLOR=RED;
while(1)
{
Start();
delay_ms(100);
}
}[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]//外部中断,出现高电平进入中断[/mw_shl_code]
[mw_shl_code=c,true] void EXTI9_5_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line8) != RESET)
{
TIM_SetCounter(TIM3,0);
TIM_Cmd(TIM3, ENABLE); //开启时钟
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)); //等待低电平
TIM_Cmd(TIM3,DISABLE); //定时器2失能
Sound_Value = TIM_GetCounter(TIM3)*10*17; //计算距离&&UltrasonicWave_Distance<150
Sound_Value = Sound_Value/100;
EXTI_ClearITPendingBit(EXTI_Line7); //清除EXTI7线路挂起位
}
LCD_ShowString(20,20,"The distance is ");
LCD_ShowNum(40,40,Sound_Value,4,16);
delay_ms(500); //500ms,改变这个时间大小,显示距离的时间就为多少,怎么会这样呢?
}[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
超声波测距不能实时显示啊,并且显示的距离的时间会限制在500ms,然后变为0,之后就不变了,按下Reset,又会显示所测距离500ms,然后变为0。真不知道问题出在哪啊,各位帮帮忙看看中断里面的程序有什么错误啊?
|