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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32紅外+超聲波的源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:347672 發表于 2018-6-8 17:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "chao.h"
  5. #include "remote.h"  
  6. #include "timer.h"

  7. #define L2 PBin(14)
  8. #define R2 PBin(15)
  9. uint16_t spd=300;
  10. u8 last;
  11. u8 last1;
  12. u8 last2;
  13. u8 last3;
  14. u16 pp=400;
  15. void dingyi()
  16. {
  17.         GPIO_InitTypeDef  GPIO_InitStructure;
  18.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE);       
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                               
  21.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                 
  22.         GPIO_Init(GPIOA, &GPIO_InitStructure);               

  23.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;         
  24.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        
  25.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  26.        
  27.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;         
  28.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        
  29.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  30.        
  31.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;         
  32.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        
  33.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  34.        
  35.        
  36.        
  37.         //紅外

  38.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;         
  39.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;        
  40.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  41.        
  42.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         
  43.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;        
  44.         GPIO_Init(GPIOB, &GPIO_InitStructure);       
  45. }
  46. void shizhong_Init()
  47. {
  48.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  49.         TIM_OCInitTypeDef  TIM_OCInitStructure;
  50.        
  51.         dingyi();
  52.        
  53.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  54.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
  55.        
  56.         TIM_TimeBaseStructure.TIM_Period = 889; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值         80K
  57.         TIM_TimeBaseStructure.TIM_Prescaler =0; //設置用來作為TIMx時鐘頻率除數的預分頻值  不分頻
  58.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
  59.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數模式
  60.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
  61.         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

  62.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2
  63.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
  64.         TIM_OCInitStructure.TIM_Pulse = 0; //設置待裝入捕獲比較寄存器的脈沖值
  65.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
  66.        
  67.         TIM_OC1Init(TIM3, &TIM_OCInitStructure);  //根據TIM_OCInitStruct中指定的參數初始化外設TIMx
  68.         TIM_OC2Init(TIM3, &TIM_OCInitStructure);
  69.         TIM_OC3Init(TIM4, &TIM_OCInitStructure);
  70.         TIM_OC4Init(TIM4, &TIM_OCInitStructure);

  71.         TIM_CtrlPWMOutputs(TIM3,ENABLE);         //MOE 主輸出使能
  72.         TIM_CtrlPWMOutputs(TIM4,ENABLE);       

  73.        
  74.         TIM_ARRPreloadConfig(TIM3, ENABLE);        //使能TIMx在ARR上的預裝載寄存器
  75.         TIM_ARRPreloadConfig(TIM4, ENABLE);
  76.        
  77.         TIM_Cmd(TIM3, ENABLE);  //使能TIM1
  78.         TIM_Cmd(TIM4, ENABLE);
  79. }
  80. void qianjin(uint16_t spd)
  81. {
  82.         TIM_SetCompare1(TIM3,899);      //INT1
  83.         TIM_SetCompare2(TIM3,spd);      //ibt2
  84.        
  85.         TIM_SetCompare3(TIM4,spd);
  86.         TIM_SetCompare4(TIM4,899);
  87.        
  88. }
  89. void zuozhuan(uint16_t spd)
  90. {
  91.         TIM_SetCompare1(TIM3,spd);
  92.         TIM_SetCompare2(TIM3,899);
  93.        
  94.         TIM_SetCompare3(TIM4,spd);
  95.         TIM_SetCompare4(TIM4,899);
  96. }
  97. void youzhuan(uint16_t spd)
  98. {
  99.         TIM_SetCompare1(TIM3,899);
  100.         TIM_SetCompare2(TIM3,spd);
  101.        
  102.         TIM_SetCompare3(TIM4,899);
  103.         TIM_SetCompare4(TIM4,spd);
  104. }
  105. void shache(uint16_t spd)
  106. {
  107.         TIM_SetCompare1(TIM3,899);
  108.         TIM_SetCompare2(TIM3,899);
  109.        
  110.         TIM_SetCompare3(TIM4,899);
  111.         TIM_SetCompare4(TIM4,899);
  112. }
  113. void back(uint16_t spd)
  114. {
  115.         TIM_SetCompare1(TIM3,spd);
  116.         TIM_SetCompare2(TIM3,899);
  117.        
  118.         TIM_SetCompare3(TIM4,899);
  119.         TIM_SetCompare4(TIM4,spd);
  120. }

  121. //紅外壁障
  122. void hongzhang(uint16_t spd)
  123. {
  124.         if(L2==1 && R2==1)            //沒有障礙
  125.                 qianjin(spd);
  126.         else if(L2 ==0 && R2 == 1)    //左邊有障礙
  127.         {
  128.                 back(spd);
  129.                 delay_ms(spd/2);
  130.                 youzhuan(spd);
  131.                 delay_ms(spd/2);
  132.         }
  133.         else if(L2 ==1 && R2 == 0)    //右邊有障礙
  134.         {
  135.                 back(spd);
  136.                 delay_ms(spd/2);
  137.                 zuozhuan(spd);
  138.                 delay_ms(spd/2);
  139.         }
  140.         else                          //左右都有障礙
  141.         {
  142.                 back(spd);
  143.                 delay_ms(spd/2);
  144.                 youzhuan(spd);
  145.                 delay_ms(spd/2);
  146.         }
  147. }

  148. int main(void)//
  149. {
  150.          u8 key;
  151.          u8 key1;
  152.          u8 key2;
  153.          u8 key3;
  154.         //u8 t=0;       
  155.         u8 *str=0;
  156.         u8 x=0;
  157.          delay_init();                     //延時函數初始?
  158.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2          
  159.          uart_init(9600);         //串口初始化為9600
  160.          shizhong_Init();
  161.          TIM2_Cap_Init(0XFFFF,72-1);                //以1Mhz的頻率計數 ;
  162.          CSB_Init();
  163.          Remote_Init();         
  164.         while(1)
  165.         {
  166.                 key=Remote_Scan();
  167.                 if(!key){key=last;}               
  168.                 if(key)
  169.                 {                   
  170.                         switch(key)
  171.                         {                           
  172.                                 case 152:str="2";
  173.                                 {
  174.                                         hongzhang(spd);
  175.                                         key2=Remote_Scan();
  176.                                         if(!key2){key2=last2;}
  177.                                         if(key2==66)
  178.                                         {
  179.                                           
  180.                                             shache(spd);
  181.                                             last2=key2;
  182.                                         }
  183.                                         else
  184.                                               last=key;       
  185.                                         break;
  186.                                        
  187.                                 }                                       
  188.                                 case 176:str="3";
  189.                                 {
  190.                                         chaosheng();
  191.                                         key3=Remote_Scan();
  192.                                         if(!key3){key3=last3;}
  193.                                         if(key3==66)
  194.                                         {
  195.                                           
  196.                                             shache(spd);
  197.                                             last3=key3;
  198.                                         }
  199.                                         else
  200.                                               last=key;       
  201.                                         break;
  202.                                 }                                       
  203.                  
  204.                         }
  205.                 }
  206.                
  207.                
  208.         }
  209. }
復制代碼

所有資料51hei提供下載:
紅外+超聲波.rar (331.61 KB, 下載次數: 11)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品国产一区二区三区 | 91毛片在线看| 欧美一区二区三区小说 | 亚洲一区二区在线 | 日韩免费高清视频 | 精品国产欧美一区二区三区成人 | 日本手机看片 | 亚洲欧美中文日韩在线v日本 | 一区视频在线 | 日日操av| 成人精品鲁一区一区二区 | 日本在线网站 | 91精品国产91久久久久久最新 | 作爱视频免费看 | 欧美性另类 | 欧美啊v在线观看 | 国产精品久久久亚洲 | 人人亚洲 | 欧美一区永久视频免费观看 | 2019精品手机国产品在线 | 国产精品久久久久久高潮 | 羞羞视频网页 | 国产不卡一区 | 精品国产不卡一区二区三区 | 亚洲天堂一区 | 国产黄色大片 | 天天爽夜夜爽精品视频婷婷 | 9久久婷婷国产综合精品性色 | 免费国产视频 | 亚洲一区电影 | 国产午夜影院 | 97av视频在线观看 | 99久久精品免费看国产免费软件 | 国产一区精品在线 | 狠狠狠| 天天色天天 | 亚洲永久免费观看 | 日韩欧美一级精品久久 | 一本岛道一二三不卡区 | 黄色片免费 | 成人国产精品久久久 |