OpenEdv-开源电子网

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

跪求stm32f103用超声波测距例程

[复制链接]

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
发表于 2016-2-17 14:42:43 | 显示全部楼层 |阅读模式
1金钱
在论坛里搜了几个例程,但用keil5编程后都有问题,求大神帮忙

最佳答案

查看完整内容[请看2#楼]

谢谢,太感谢了,您说的话我一定记住,以后一定继续努力,争取更快研究透开发板。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-17 14:42:44 | 显示全部楼层
wszdxmh 发表于 2016-2-18 13:43
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //初始化优先级
初始化超声波
[mw_shl_code=c, ...

谢谢,太感谢了,您说的话我一定记住,以后一定继续努力,争取更快研究透开发板。
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-2-17 14:47:18 | 显示全部楼层
keil5不行就换keil4
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12021
金钱
12021
注册时间
2013-3-8
在线时间
1280 小时
发表于 2016-2-17 14:52:53 | 显示全部楼层
我只有51的,要不要!
回复

使用道具 举报

3

主题

177

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2016-1-28
在线时间
265 小时
发表于 2016-2-17 15:01:17 | 显示全部楼层
帮顶。。。。。。。
宠辱不惊看庭前花开花落去留无意望天上云卷云舒。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-17 16:21:48 | 显示全部楼层
augustedward 发表于 2016-2-17 14:52
我只有51的,要不要!

没有51单片机啊
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-17 16:22:12 | 显示全部楼层
ricefat 发表于 2016-2-17 14:47
keil5不行就换keil4

好的,我试一试
回复

使用道具 举报

20

主题

468

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1684
金钱
1684
注册时间
2014-2-25
在线时间
230 小时
发表于 2016-2-17 23:37:05 | 显示全部楼层
想提高,自己写一个吧。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12021
金钱
12021
注册时间
2013-3-8
在线时间
1280 小时
发表于 2016-2-18 07:53:53 | 显示全部楼层

参考51的程序,移植到STM32上不就行了
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2504
金钱
2504
注册时间
2015-8-17
在线时间
383 小时
发表于 2016-2-18 13:43:49 | 显示全部楼层
本帖最后由 wszdxmh 于 2016-2-18 13:45 编辑

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //初始化优先级
初始化超声波
[mw_shl_code=c,true]void Ultrasonic_TIM5_Init(uint16_t arr, uint16_t psc)
{
        TIM_ICInitTypeDef TIM_ICInitStruct;
        GPIO_InitTypeDef GPIO_InitStruct;
        NVIC_InitTypeDef NVIC_InitStruct;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
        //ê1Äüê±Öó
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);//ê1ÄüTIM5¶¨ê±Æ÷ê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ê1ÄüGPIOAê±Öó
        //3õê¼»ˉTIM5¶¨ê±Æ÷
        TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInitStruct.TIM_Period = arr;
        TIM_TimeBaseInitStruct.TIM_Prescaler = psc;
        TIM_TimeBaseInit(TIM5, &TIM_TimeBaseInitStruct);
        //3õê¼»ˉTIM5êäèë2¶»ñ
        TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;//í¨μà1
        TIM_ICInitStruct.TIM_ICFilter = 0x00;//2»ÂË2¨
        TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;//¼«DÔÎaéÏéyÑØ2¶»ñ
        TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;//2»·ÖÆμ
        TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;//ó3éäTI1
        TIM_ICInit(TIM5, &TIM_ICInitStruct);
        //3õê¼»ˉêäèë2¶»ñòy½Å ECHO
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        //3õê¼»ˉ3¬éù2¨′¥·¢òy½Å TRIG
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        GPIO_ResetBits(GPIOA, GPIO_Pin_1);//TRIGà-μí
        //3õê¼»ˉÖD¶Ï·Ö×é
        NVIC_InitStruct.NVIC_IRQChannel = TIM5_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
        NVIC_Init(&NVIC_InitStruct);
        //ê1ÄüTIM5
        TIM_ITConfig(TIM5, TIM_IT_Update | TIM_IT_CC1, ENABLE);//ÔêDí¸üDÂÖD¶Ï£¬ÔêDíCC12¶»ñÖD¶Ï
        TIM_Cmd(TIM5, ENABLE);//ê1ÄüTIM5¶¨ê±Æ÷
}[/mw_shl_code]距离计算
[mw_shl_code=c,true]/**
  ************************************
  * @brief  3¬éù2¨¾ààë»ñè¡
  * @param  arr:5999   psc:72
  * @retval None
        ************************************
*/
uint16_t Ultrasonic_Value(uint16_t arr, uint16_t psc)
{
        uint16_t value=0;
        GPIO_SetBits(GPIOA, GPIO_Pin_1);//TRIGà-¸ß
        delay_us(15);//Ñóê±15us
        GPIO_ResetBits(GPIOA, GPIO_Pin_1);//TRIGà-μí
        Ultrasonic_TIM5_Init(arr, psc);
        while(TIM5CH1_CAPTURE_STA&0x80)//3é1|2¶»ñ
        {
                TIM5CH1_CAPTURE_STA &= 0x3f;//Çå3y±ê־λ
                value = (10.0)*(TIM5CH1_CAPTURE_STA * arr + TIM5CH1_CAPTURE_VAL) / 58;  //cm=us/58   mm=cm*10
                TIM5CH1_CAPTURE_STA = 0;//¿aÆôÏÂò»′ÎÖD¶Ï
        }
        return value;
}[/mw_shl_code]
中断捕获
[mw_shl_code=c,true]void TIM5_IRQHandler(void)
{
        if((TIM5CH1_CAPTURE_STA & 0x80) == 0)//Î′3é1|2¶»ñìø±äÑØ
        {
                if(TIM_GetITStatus(TIM5, TIM_IT_Update) == 1)//′¥·¢¸üDÂÖD¶Ï
                {
                        if(TIM5CH1_CAPTURE_STA & 0x40)//òѾ-2¶»ñá˸ßμçÆ½
                        {
                                if((TIM5CH1_CAPTURE_STA & 0x01) == 0x01)//¸ßμçÆ½ì«3¤
                                {
                                        TIM5CH1_CAPTURE_STA |= 0x80;
                                        TIM5CH1_CAPTURE_VAL = 0x01;
                                }
                                else
                                {
                                        TIM5CH1_CAPTURE_STA++;
                                }
                        }
                }
                if(TIM_GetITStatus(TIM5, TIM_IT_CC1) == 1)
                {
                        if(TIM5CH1_CAPTURE_STA & 0x40)//òѾ-2¶»ñá˸ßμçÆ½
                        {
                                TIM5CH1_CAPTURE_STA |= 0x80;
                                TIM5CH1_CAPTURE_VAL = TIM_GetCapture1(TIM5);
                                TIM_OC1PolarityConfig(TIM5, TIM_ICPolarity_Rising);//éèÖÃÎaéÏéyÑØ2¶»ñ
                        }
                        else
                        {
                                TIM5CH1_CAPTURE_STA = 0;
                                TIM5CH1_CAPTURE_VAL = 0;
                                TIM5CH1_CAPTURE_STA |= 0x40;
                                TIM_SetCounter(TIM5, 0);//Çåáã¼ÆêyÆ÷3õÖμ
                                TIM_OC1PolarityConfig(TIM5, TIM_ICPolarity_Falling);//éèÖÃÎaϽμÑØ2¶»ñ
                        }
                }
        }
        TIM_ClearITPendingBit(TIM5, TIM_IT_Update | TIM_IT_CC1);
}[/mw_shl_code]

做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-18 14:40:57 | 显示全部楼层
1201yuge 发表于 2016-2-17 23:37
想提高,自己写一个吧。

好的,我试试
回复

使用道具 举报

29

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
金钱
1530
注册时间
2012-9-4
在线时间
262 小时
发表于 2016-2-18 15:18:28 | 显示全部楼层
这个应该不难吧!!!
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-18 15:45:57 | 显示全部楼层
15623052920 发表于 2016-2-17 15:01
帮顶。。。。。。。

谢谢
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-2-17
在线时间
3 小时
 楼主| 发表于 2016-2-18 15:50:29 | 显示全部楼层
aben 发表于 2016-2-18 15:18
这个应该不难吧!!!

我是新手啊,已经解决了,谢谢。
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2504
金钱
2504
注册时间
2015-8-17
在线时间
383 小时
发表于 2016-2-18 18:27:21 | 显示全部楼层
quyezhou 发表于 2016-2-17 14:42
谢谢,太感谢了,您说的话我一定记住,以后一定继续努力,争取更快研究透开发板。

我说什么了?我就放了段代码啊?是不是你回复错了啊?
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

29

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
金钱
1530
注册时间
2012-9-4
在线时间
262 小时
发表于 2016-2-19 11:45:49 | 显示全部楼层
wszdxmh 发表于 2016-2-18 18:27
我说什么了?我就放了段代码啊?是不是你回复错了啊?

楼主估计是看到你的“做事原则啦”
STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-5-6
在线时间
4 小时
发表于 2016-5-19 14:56:24 | 显示全部楼层
楼主有完整超声波测距程序没?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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