标题: stm32f103超声波小灯检测,只需要添加IF语句,就可以控制电机。B0是echo B7是tring [打印本页]

作者: 枫叶独眠    时间: 2018-8-2 13:39
标题: stm32f103超声波小灯检测,只需要添加IF语句,就可以控制电机。B0是echo B7是tring

这是我改了捕获实验程序的,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)



作者: 枫叶独眠    时间: 2018-8-2 13:41
最后那个while(1);要注释掉




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1