久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: stm32f4單片機避障簡易程序 [打印本頁]

作者: 131244    時間: 2018-11-24 22:19
標題: stm32f4單片機避障簡易程序
參加比賽的程序分享

單片機源程序如下:
  1. #include"sys.h"
  2. #include"delay.h"
  3. //系統頭文件
  4. #include"timer.h"
  5. #include"gpioin.h"
  6. //定時器頭文件
  7. #include"l298nin.h"
  8. #include"pwm.h"
  9. //電機驅動頭文件
  10. #include"oled.h"
  11. #include"iic.h"
  12. //顯示屏頭文件
  13. #include"motor.h"
  14. #include"calculate&pi.h"
  15. //編碼器頭文件


  16. //全局變量
  17. int Vocality[2];//速度值 取值范圍在0~95之間
  18. int Pwm[2];
  19. int Encoder_Date[2];

  20. extern int flagA,flagB,flagC,flagD;
  21. extern int finishflag8;

  22. int main()
  23. {
  24.         Vocality[0] = 78;               
  25.         Vocality[1] = 78;
  26.        
  27.   delay_init(168);
  28.         led_init();
  29.        
  30.         gpioin_init();
  31.         l298nin_init();
  32.        
  33.         TIM3_Encoder_init();
  34.         TIM4_Encoder_init();//編碼器信號捕捉初始化
  35.        
  36.         TIM13_pwm_init(499,8399);
  37.         TIM14_pwm_init(499,8399);//pwm輸出初始化
  38.        
  39.         IIC_Init();
  40.         OLED_Init();//oled初始化
  41.        
  42.         TIM2_init(499,8399);//每50ms進入一次定時器中斷,掃描光電開關的情況
  43.         TIM7_CAL_init(499,8399);//每0.1s進入一次定時器中斷,進行pi控速
  44.        

  45.                
  46.         while(1)
  47.         {                               
  48.                                          motor_straight();                                 
  49. //由光電開關0進行卡邊
  50.                                         if(gdian0)
  51.                                         {
  52.                                                 motor_only_left();
  53.                                                 while(gdian0);
  54.                                                 motor_straight();
  55.                                         }
  56. //由光電開關1進行轉彎
  57.                                                 if(!gdian1)
  58.                                         {
  59.                                                 if(flagA) finishflag8 = 0;
  60.                                                 motor_only_right();
  61.                                                 while(!gdian1);
  62.                                                 delay(1500);
  63.                                                 if(!flagB)
  64.                                                 {
  65.                                                         delay(1200);
  66.                                                 }
  67.                                                 motor_straight();
  68.                                                 if(flagC) flagD = 1;
  69.                                                 if(flagB) flagC = 1;       
  70.                                                 if(flagA) flagB = 1;
  71.                                                 flagA  = 1;
  72.                                         }
  73.         }
  74.        
  75. }
復制代碼

pwm:
  1. //pwm調速函數,用于調整EnA和EnB的電平



  2. #include"pwm.h"
  3. #include"sys.h"



  4. void TIM13_pwm_init(u16 arr,u16 psc)  //PF8引腳的控制即EnA
  5. {       
  6.         GPIO_InitTypeDef                                GPIO_Initstru;
  7.         TIM_TimeBaseInitTypeDef                        TIM_TimeBaseInitstru;
  8.         TIM_OCInitTypeDef                                             TIM_OCInitstru;//結構體指針變量
  9.        
  10.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13,ENABLE);
  11.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//時鐘初始化
  12.        
  13.         GPIO_PinAFConfig(GPIOF,GPIO_PinSource8,GPIO_AF_TIM13);//復用功能映射
  14.        
  15.         GPIO_Initstru.GPIO_Mode  = GPIO_Mode_AF;
  16.         GPIO_Initstru.GPIO_OType = GPIO_OType_PP;
  17.         GPIO_Initstru.GPIO_Pin  = GPIO_Pin_8;
  18.         GPIO_Initstru.GPIO_Speed = GPIO_Speed_50MHz;
  19.                                 GPIO_Init(GPIOF,&GPIO_Initstru);//GPIO口初始化
  20.        
  21.         TIM_TimeBaseInitstru.TIM_Period = arr;
  22.         TIM_TimeBaseInitstru.TIM_Prescaler = psc;
  23.         TIM_TimeBaseInitstru.TIM_CounterMode  = TIM_CounterMode_Up;
  24.                                 TIM_TimeBaseInit(TIM13,&TIM_TimeBaseInitstru);//定時器初始化
  25.        
  26.         TIM_OC1PreloadConfig(TIM13,TIM_OCPreload_Enable);
  27.         TIM_ARRPreloadConfig(TIM13,ENABLE);//輸出比較通道預裝載
  28.        
  29.         TIM_OCInitstru.TIM_OCMode = TIM_OCMode_PWM1;
  30.         TIM_OCInitstru.TIM_OCPolarity = TIM_OCPolarity_Low;
  31.         TIM_OCInitstru.TIM_OutputState = TIM_OutputState_Enable;
  32.         TIM_OCInitstru.TIM_Pulse = 0;
  33.                                         TIM_OC1Init(TIM13,&TIM_OCInitstru);//輸出比較通道初始化
  34.                                        
  35.         TIM_Cmd(TIM13,ENABLE);//打開定時器
  36. }       
  37.        
  38.        
  39.        
  40. void TIM14_pwm_init(u16 arr,u16 psc)  //PF9引腳的控制即EnB
  41. {       
  42.         GPIO_InitTypeDef                                GPIO_Initstru;
  43.         TIM_TimeBaseInitTypeDef                        TIM_TimeBaseInitstru;
  44.         TIM_OCInitTypeDef                                             TIM_OCInitstru;//結構體指針變量
  45.        
  46.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);
  47.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//時鐘初始化
  48.        
  49.         GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);//復用功能映射
  50.        
  51.         GPIO_Initstru.GPIO_Mode  = GPIO_Mode_AF;
  52.         GPIO_Initstru.GPIO_OType = GPIO_OType_PP;
  53.         GPIO_Initstru.GPIO_Pin  = GPIO_Pin_9;
  54.         GPIO_Initstru.GPIO_Speed = GPIO_Speed_50MHz;
  55.                                 GPIO_Init(GPIOF,&GPIO_Initstru);//GPIO口初始化
  56.        
  57.         TIM_TimeBaseInitstru.TIM_Period = arr;
  58.         TIM_TimeBaseInitstru.TIM_Prescaler = psc;
  59.         TIM_TimeBaseInitstru.TIM_CounterMode  = TIM_CounterMode_Up;
  60.                                 TIM_TimeBaseInit(TIM14,&TIM_TimeBaseInitstru);//定時器初始化
  61.        
  62.         TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);
  63.         TIM_ARRPreloadConfig(TIM14,ENABLE);//輸出比較通道預裝載
  64.        
  65.         TIM_OCInitstru.TIM_OCMode = TIM_OCMode_PWM1;
  66.         TIM_OCInitstru.TIM_OCPolarity = TIM_OCPolarity_Low;
  67.         TIM_OCInitstru.TIM_OutputState = TIM_OutputState_Enable;
  68.         TIM_OCInitstru.TIM_Pulse = 0;
  69.                                         TIM_OC1Init(TIM14,&TIM_OCInitstru);//輸出比較通道初始化
  70.                                        
  71.         TIM_Cmd(TIM14,ENABLE);//打開定時器
  72. }
復制代碼

所有資料51hei提供下載:
32單片機.rar (482.16 KB, 下載次數: 11)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 四虎影院在线观看免费视频 | 美女中文字幕视频 | 精品欧美一区二区在线观看视频 | 久久99这里只有精品 | 新av在线| 久久精品一区二区 | 日韩在线视频一区 | 热久久久| 色噜噜狠狠色综合中国 | 日韩色综合 | 狠狠狠色丁香婷婷综合久久五月 | 国产性色视频 | 9999视频 | 91久久婷婷 | 日韩中文字幕视频在线观看 | 午夜视频网 | 久久成人午夜 | 久久久综合精品 | 久夜精品 | 97精品超碰一区二区三区 | 日韩和的一区二区 | 国产农村一级国产农村 | 国产精品久久久久久二区 | 午夜男人天堂 | 国产精品激情 | 久久成人18免费网站 | 日本中文在线 | 久久久久久国产精品 | 日韩精品一区二区三区 | 欧美一级特黄aaa大片在线观看 | av福利网| 欧美视频三区 | 草草草影院 | 久久国产精品一区二区三区 | 亚洲欧美综合精品久久成人 | 国产视频第一页 | 日韩一级免费看 | 久久高清国产 | 日本一本在线 | 欧美午夜精品久久久久久浪潮 | 日韩中文一区 |