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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4252|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STM32F103C8T6的PS2遙控小車程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:225095 發(fā)表于 2019-6-7 22:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1. 采用PWM波控制,timer2, ch1/2/3/4, PA0/1/2/3
2. UART1,PA9/PA10可以和lora E32-TTL-100 通信。
3. 問題,SP2遙控器還是由有些控制不靈敏。

單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"         
  5. #include "pstwo.h"
  6. #include "moto.h"
  7. /*********************************************************
  8. 功能:通過PS2控制小車運(yùn)動(dòng)
  9. 作者:大海
  10. 時(shí)間:180531
  11. 硬件平臺(tái):STM32F103C8T6
  12. 時(shí)鐘:8Mhz

  13. 硬件引腳分配:
  14. //手柄接口
  15. DI=PB12;       
  16. DO=PB13 ;
  17. CS=PB14;
  18. CLK=PB15;

  19. //L298N 電機(jī)驅(qū)動(dòng)控制引腳
  20. IN1=PA0;           //左側(cè)電機(jī)正  
  21. IN2=PA1;                //左側(cè)電機(jī)負(fù)  
  22. IN3=PA2;           //右側(cè)電機(jī)正   
  23. IN4=PA3;                //右側(cè)電機(jī)負(fù)

  24. LED = PC13;
  25. **********************************************************/         
  26. //#define go                         {IN1=1;IN2=0;IN3=0;IN4=1;}
  27. //#define back                 {IN1=0;IN2=1;IN3=1;IN4=0;}
  28. //#define stop                {IN1=1;IN2=1;IN3=1;IN4=1;}
  29. //#define turnleft                {IN1=1;IN2=1;IN3=0;IN4=1;}
  30. //#define turnright                {IN1=1;IN2=0;IN3=1;IN4=1;}



  31. int speed;

  32. char SysClock;       //申請(qǐng)存儲(chǔ)系統(tǒng)時(shí)鐘變量,單位MHz
  33. char SystemClock_HSE(u8 PLL);
  34. void MYRCC_DeInit(void);

  35. int main(void)
  36. {         
  37.          u8 key=0;
  38.         SystemClock_HSE(9);           //系統(tǒng)時(shí)鐘初始化,時(shí)鐘源外部晶振HSEs  8*9=72MHz;
  39.         delay_init();                     //延時(shí)函數(shù)初始化          
  40.         NVIC_Configuration();          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  41.         uart_init(9600);                 //串口初始化為9600
  42.         LED_Init();                             //LED端口初始化
  43.         PS2_Init();                                
  44.   //motor_Init();
  45.         MotorInit();
  46.         //printf("hello! \r\n");
  47.         speed=10;
  48.          
  49.         while(1)
  50.         {
  51.        
  52.                 key=PS2_DataKey();
  53.                
  54.                  switch(key)
  55.                  {
  56.                          case 5:go;break;
  57.                          case 7:back;break;
  58.                          case 8:turnleft;break;
  59.                          case 6:turnright;break;
  60.                          case 9:LED_ON;break;
  61.                          case 10:LED_OFF;break;
  62.                          case 11:speed=(speed>=10)?10:speed+1;break;
  63.                          case 12:speed=(speed<=0)?0:speed-1;break;
  64.                          
  65.                          default:stop;break;                         
  66.                  }
  67.                 if(key!=0)                   //有按鍵按下
  68.             {
  69.                         printf("%d  is  pressed  \r\n",key);
  70.             }
  71. //                printf(" %5d %5d %5d %5d\r\n",PS2_AnologData(PSS_LX),PS2_AnologData(PSS_LY),
  72. //                                              PS2_AnologData(PSS_RX),PS2_AnologData(PSS_RY) );
  73.                   
  74.        delay_ms(10);
  75.         }                        
  76. }



  77. //不能在這里執(zhí)行所有外設(shè)復(fù)位!否則至少引起串口不工作.                    
  78. //把所有時(shí)鐘寄存器復(fù)位                  
  79. void MYRCC_DeInit(void)
  80. {       
  81.         RCC->APB1RSTR = 0x00000000;//復(fù)位結(jié)束                         
  82.         RCC->APB2RSTR = 0x00000000;

  83.   RCC->AHBENR = 0x00000014;  //睡眠模式閃存和SRAM時(shí)鐘使能.其他關(guān)閉.          
  84.   RCC->APB2ENR = 0x00000000; //外設(shè)時(shí)鐘關(guān)閉.                          
  85.   RCC->APB1ENR = 0x00000000;   
  86.         RCC->CR |= 0x00000001;     //使能內(nèi)部高速時(shí)鐘HSION                                                                                                                                  
  87.         RCC->CFGR &= 0xF8FF0000;   //復(fù)位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]                                         
  88.         RCC->CR &= 0xFEF6FFFF;     //復(fù)位HSEON,CSSON,PLLON
  89.         RCC->CR &= 0xFFFBFFFF;     //復(fù)位HSEBYP                     
  90.         RCC->CFGR &= 0xFF80FFFF;   //復(fù)位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
  91.         RCC->CIR = 0x00000000;     //關(guān)閉所有中斷                 
  92. }


  93. /********************************************
  94.            使用外部晶體作為系統(tǒng)時(shí)鐘源
  95. 功能:
  96. 1.使用外部HSE時(shí)鐘8M作為PLL輸入
  97. 2.PLL倍頻系數(shù)PLLMUL<=9(實(shí)際到達(dá)16時(shí),還能正常倍頻外部時(shí)鐘)
  98. 3.輸入?yún)?shù):PLLMUL,PLL倍頻系數(shù)
  99. 4.備注:官方手冊(cè)上說(shuō),使用HSE作為系統(tǒng)時(shí)鐘源時(shí),最高可倍頻到72MHz,但是實(shí)際可以倍頻到128M系統(tǒng)還算穩(wěn)定
  100. ********************************************/
  101. //系統(tǒng)時(shí)鐘初始化函數(shù)
  102. //pll:選擇的倍頻數(shù),從2開始,最大值為16               
  103. //時(shí)鐘源為外部晶振
  104. //備注:當(dāng)機(jī)身焊接了8M晶振時(shí),就只能使用外部8M晶振作為時(shí)鐘源,
  105. //      用內(nèi)部的HSI不好使,我反正沒調(diào)出來(lái),看各位有啥辦法沒
  106. char SystemClock_HSE(u8 PLL)
  107. {
  108.         unsigned char temp=0;   
  109.         MYRCC_DeInit();                    //復(fù)位并配置向量表
  110.         RCC->CR|=1<<16;       //外部高速時(shí)鐘使能HSEON
  111.         while(!(RCC->CR>>17));//等待外部時(shí)鐘就緒
  112.         RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
  113.         PLL-=2;//抵消2個(gè)單位
  114.         RCC->CFGR|=PLL<<18;   //設(shè)置PLL值 2~16
  115.         RCC->CFGR|=1<<16;            //PLLSRC ON
  116.         FLASH->ACR|=0x32;            //FLASH 2個(gè)延時(shí)周期
  117.         RCC->CR|=0x01000000;  //PLLON
  118.         while(!(RCC->CR>>25));//等待PLL鎖定
  119.         RCC->CFGR|=0x00000002;//PLL作為系統(tǒng)時(shí)鐘         
  120.         while(temp!=0x02)     //等待PLL作為系統(tǒng)時(shí)鐘設(shè)置成功
  121.         {   
  122.                 temp=RCC->CFGR>>2;
  123.                 temp&=0x03;
  124.         }   

  125.   SysClock=(PLL+2)*8;
  126.   return SysClock;
  127. }       
復(fù)制代碼

所有資料51hei提供下載:
基于STM32F103C8T6的PS2遙控小車源碼及接線_k5_v0.2.zip (593.48 KB, 下載次數(shù): 92)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:250660 發(fā)表于 2019-7-30 11:49 | 只看該作者
咋看都是51啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:415804 發(fā)表于 2020-4-13 12:01 | 只看該作者
這個(gè)看著不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

地板
ID:932417 發(fā)表于 2021-7-8 11:30 | 只看該作者
那個(gè)有ps2遙控器的原理圖
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色三级在线 | 极品在线视频 | 中文在线免费看视频 | 亚洲女优在线 | 亚洲黄色在线 | 久久精品视频一区 | 成av人片一区二区三区久久 | 中文字幕一区在线观看 | 精品国产999久久久免费 | 亚洲美女在线视频 | 欧美日韩一区在线 | 亚洲激情综合网 | 久久久综合 | 亚洲欧美中文字幕 | 日本免费毛片 | 欧洲一区二区 | 欧美日韩视频一区二区 | 午夜无遮挡 | 日韩av在线一区二区 | 天天插天天插 | 综合一区二区三区 | 欧美久久久 | 亚洲一区二区三区在线视频 | 亚洲成肉网 | 国产日韩在线播放 | 伦一理一级一a一片 | 亚洲成a人片 | 欧美成人久久 | 国产亚洲欧美在线 | 国产激情综合 | 日韩av在线网址 | 国产操操操 | 狠狠操网 | 日韩免费精品 | 久草国产视频 | 在线观看欧美 | 性做久久 | 久久精品国产视频 | 国产91精品在线观看 | 国产精品一品二区三区的使用体验 | 精品一区二区在线视频 |