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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2993|回復: 0
打印 上一主題 下一主題
收起左側

stm32f4單片機避障簡易程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:432626 發表于 2018-11-24 22:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
參加比賽的程序分享

單片機源程序如下:
  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)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线看片 | 国产亚洲一区二区三区在线 | 你懂的av| 亚洲欧美日韩电影 | 国产日韩欧美一区 | 国产日韩视频在线 | 国产精品久久久久久久久久 | 老子午夜影院 | 免费看国产片在线观看 | 欧美色人| 黄色片视频免费 | 亚洲色图在线观看 | 欧美二区三区 | 成人精品一区 | 欧美福利 | 日本 欧美 三级 高清 视频 | 五月婷婷激情网 | 在线视频成人 | 中文字幕av亚洲精品一部二部 | 一级a爱片久久毛片 | 国产露脸国语对白在线 | 欧美精品一区三区 | 神马九九 | 在线观看亚洲欧美 | 亚洲a视频 | 日韩一二三区视频 | 亚洲视频一区二区三区四区 | 欧美涩涩网| 成人精品在线观看 | 欧美精品一区二区三区四区五区 | 久久精品中文字幕 | 久久精品男人的天堂 | 亚洲三区在线观看 | 一区二区三区国产 | 久久亚洲综合 | 欧美精品一区在线 | 欧美视频xxx | 久久一级免费视频 | 三级黄色片在线播放 | 超碰97人人人人人蜜桃 | 久久中文免费视频 |