OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5973|回复: 1

我刚刚开始学F103现在在写一个超声波测距的程序 中断测时间这块总是只计时一次。大家帮我看看

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-8-2
在线时间
2 小时
发表于 2015-9-11 18:24:52 | 显示全部楼层 |阅读模式
5金钱
下面是写的程序,循环计时总是只有1U也就是只能循环一次,但是在进入中断钱的计时应该远远长鱼1us始终实现不了计时  大家帮忙看看
#include "ultrasound.h"

static volatile u8 flag;
extern volatile int distance;
//超声波管脚初始化
void Ultrasound_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
//初始化时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO ,ENABLE);

//配置Trig
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
//配置Echo
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
//外部中断
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12); 
EXTI_InitStructure.EXTI_Line = EXTI_Line12; //外部中断线12
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能
EXTI_Init(&EXTI_InitStructure);
//配置中断向量表
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //分组2
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  //抢占优先级3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //响应优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStructure);  
}


void Distance_Convert()
{
int D_time = 0;
flag = 1;//计时标志位
LED_5 = 1; //计时检测灯
Ultrasound_Trig = 1; //触发超声波模块
delay_us(10); //触发时间延时
Ultrasound_Trig = 0; //关闭
while(flag)
{
delay_us(1);
D_time ++;
}
distance = D_time * 17;  //计算距离
LED_5 = 0;
}

void EXTI15_10_IRQHandler()
{
if(EXTI_GetITStatus(EXTI_Line12) != RESET)
{
flag = 0;  //检测到下降进入中断将标志位置零 跳出循环
}
EXTI_ClearITPendingBit(EXTI_Line12);  //清除中断标志
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-9-11 22:46:51 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 06:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表