这个是我之前通过不断的查资料和更该写的使用STM32f103c8t6控制电机,并且可调速的程序,对于新手可以有一些参考作用!!!
f103c8t6 - 避障加蓝牙完整PWM控制的源程序:
完整源码下载:
f103c8t6 - 避障加蓝牙完整PWM控制.zip
下面是主程序预览:
- #include"usart.h"
- #include"pwm.h"
- #include"sys.h"
- #include"delay.h"
- #include"hw.h"
- #include"c***.h"
- #include"lanya.h"
- int main()
- {
- int left,right,bzl,bzr,counter,i=0,j,max;
- u16 distance,dis[5];
- uart_init(9600);
- hw_init();
- delay_init(); //初始化延时函数
- PWM_Init(600,0);
- while(1)
- {
- lanya();
- bzl=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);//避障左边传感器
- bzr=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4);
- // printf("dis=%urn",distance);
- // delay_ms(500);
- //
- // printf("i=%drn",i);
- //直行
- max=0;
- for(counter=0;counter<5;counter++)
- {
- dis[counter]=c***();
- }
- for(j=0;j<5;j++)
- {
- max=max+dis[j];
- }
- distance=max/5;
- //直行
- //左边
- if(bzr==0)//左转
- {
- tiM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(20);
- }
- if(bzl==0)//右转
- {
- TIM_SetCompare3(TIM2,600);//PA2反转
- TIM_SetCompare4(TIM2,1);//PA3为
- TIM_SetCompare2(TIM3,0);//PA7提速
- TIM_SetCompare1(TIM3,600);//PA6为低
- delay_ms(20);
- }
- if(distance<200)//左转
- {
- TIM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(20);
- }
- if(bzl==0&&distance<200)
- {
- TIM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(20);
- }
- if(bzr==0&&distance<200)
- {
- TIM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(20);
- }
- if(bzr==0&&bzl==0)
- {
- TIM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(20);
- }
- if(bzr==0&&bzl==0&&distance<200)
- {
- TIM_SetCompare3(TIM2,0);//PA2提速
- TIM_SetCompare4(TIM2,600);//PA3为低
- TIM_SetCompare2(TIM3,600);//PA7反转
- TIM_SetCompare1(TIM3,0);//PA6为
- delay_ms(30);
- }
- }
- TIM_SetCompare2(TIM3,200);//PA7
- TIM_SetCompare1(TIM3,600);//PA6为低
- //右边
- TIM_SetCompare3(TIM2,200);//PA2
- TIM_SetCompare4(TIM2,600);//PA3为低
- delay_ms(20);
- }
|