找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1637|回复: 1
打印 上一主题 下一主题
收起左侧

stm32f103超声波小灯检测,只需要添加IF语句,就可以控制电机。B0是echo B7是tring

[复制链接]
跳转到指定楼层
楼主
ID:364826 发表于 2018-8-2 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

这是我改了捕获实验程序的,echo和tring分别是PBout(0)和PBout(7)
添加if语句你就可以实现无刷电机的驱动了,不过我还没有添加PID所以仅供参考借鉴和超声波的检测

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"

  7. extern u8  TIM3CH3_CAPTURE_STA;                //输入捕获状态                                                   
  8. extern u16        TIM3CH3_CAPTURE_VAL;        //输入捕获值       
  9. extern u32 temp1;
  10. extern u8 kaishi;
  11. int main(void)
  12. {
  13.          
  14.         u32 temp=0;
  15.         u16 led0pwmval=0;
  16.         u8 dir=1;       
  17.         u8 takeoff=1;
  18.         delay_init();                     //延时函数初始化          
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  20.         uart_init(115200);         //串口初始化为115200
  21.         LED_Init();                             //LED端口初始化
  22.         TIM2_Int_Init(19999,71);       
  23.         TIM3_PWM_Init(19999,71);         //不分频。PWM频率=72000000/900=80Khz   
  24.         TIM_SetCompare2(TIM3,800);
  25.         TIM_SetCompare1(TIM3,800);
  26.         delay_ms(1500);
  27.         delay_ms(1500);
  28.         delay_ms(1500);       
  29.         delay_ms(1500);
  30.          
  31.    kaishi=1;
  32.           PBout(7)=1;
  33.                  delay_us(15);
  34.                  PBout(7)=0;

  35.             while(1)
  36.         {         
  37.            PBout(7)=1;
  38.                  delay_us(15);
  39.                  PBout(7)=0;
  40.                 if(TIM3CH3_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
  41.                 {
  42.                         temp=TIM3CH3_CAPTURE_STA&0X3F;
  43.                         temp*=20000;//溢出时间总和
  44.                         temp+=TIM3CH3_CAPTURE_VAL;//得到总的高电平时间
  45.                         temp1 = temp;     //全局变量传递参数
  46.                         //此处添加IF语句调试控制电机
  47.                         TIM3CH3_CAPTURE_STA=0;//开启下一次捕获
  48.                         PBout(7)=1;
  49.                   delay_us(15);
  50.                   PBout(7)=0;
  51.                        
  52.                 }
  53.                 else delay_ms(5);
  54.                 while(1);
  55.                

  56.                
  57.                
  58.                
  59.         }
  60. }

复制代码

所有资料51hei提供下载:
实验9 PWM输出实验.rar (288.49 KB, 下载次数: 11)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:364826 发表于 2018-8-2 13:41 | 只看该作者
最后那个while(1);要注释掉
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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