這個是我之前通過不斷的查資料和更該寫的使用stm32f103c8t6控制電機,并且可調速的程序,對于新手可以有一些參考作用!!!
f103c8t6 - 避障加藍牙完整PWM控制的源程序:
0.png (62.57 KB, 下載次數: 160)
下載附件
2017-3-4 23:23 上傳
完整源碼下載:
f103c8t6 - 避障加藍牙完整PWM控制.zip
(4.28 MB, 下載次數: 601)
2017-3-4 16:12 上傳
點擊文件名下載附件
完整程序 下載積分: 黑幣 -5
下面是主程序預覽:
- #include"usart.h"
- #include"pwm.h"
- #include"sys.h"
- #include"delay.h"
- #include"hw.h"
- #include"csb.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=%u\r\n",distance);
- // delay_ms(500);
- //
- // printf("i=%d\r\n",i);
- //直行
-
- max=0;
- for(counter=0;counter<5;counter++)
- {
- dis[counter]=csb();
- }
- 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);
-
- }
復制代碼 |