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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32電機速度閉環控制(代碼詳細注釋)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:372737 發表于 2018-7-27 09:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
PID 源碼,大家可以看看,討論討論。

單片機源程序如下:
  1. #include "sys.h"
  2. u8 Flag_Stop=1;            //停止標志位
  3. int Encoder;               //編碼器的脈沖計數
  4. int Moto1;                 //電機PWM變量 應是Motor的 向Moto致敬       

  5. int main(void)
  6. {
  7.         Stm32_Clock_Init(9);            //系統時鐘設置
  8.         delay_init(72);                 //延時初始化
  9.         LED_Init();                     //初始化與 LED 連接的硬件接口
  10.         uart_init(72,115200);           //初始化串口1
  11.         MiniBalance_PWM_Init(7199,0);   //=====初始化PWM 10KHZ 高頻可以防止電機低頻時的尖叫聲
  12.         Encoder_Init_TIM2();            //初始化編碼器
  13.   Timer3_Init(99,7199);           //=====10MS進一次中斷服務函數,中斷服務函數在control.c
  14.         while(1)
  15.                 {
  16.                         printf("%d\r\n",Encoder);       
  17.                 }
  18. }
復制代碼
  1. #include "motor.h"
  2. void MiniBalance_Motor_Init(void)
  3. {
  4.         RCC->APB2ENR|=1<<3;       //PORTB時鐘使能   
  5.         GPIOB->CRH&=0X0000FFFF;   //PORTB12 13 14 15推挽輸出
  6.         GPIOB->CRH|=0X22220000;   //PORTB12 13 14 15推挽輸出
  7. }
  8. void MiniBalance_PWM_Init(u16 arr,u16 psc)
  9. {                                                          
  10.         MiniBalance_Motor_Init();  //初始化電機控制所需IO
  11.         RCC->APB2ENR|=1<<11;       //使能TIM1時鐘   
  12.         RCC->APB2ENR|=1<<2;        //PORTA時鐘使能     
  13.         GPIOA->CRH&=0XFFFF0FF0;    //PORTA8 11復用輸出
  14.         GPIOA->CRH|=0X0000B00B;    //PORTA8 11復用輸出
  15.         TIM1->ARR=arr;             //設定計數器自動重裝值
  16.         TIM1->PSC=psc;             //預分頻器不分頻
  17.         TIM1->CCMR2|=6<<12;        //CH4 PWM1模式       
  18.         TIM1->CCMR1|=6<<4;         //CH1 PWM1模式       
  19.         TIM1->CCMR2|=1<<11;        //CH4預裝載使能         
  20.         TIM1->CCMR1|=1<<3;         //CH1預裝載使能          
  21.         TIM1->CCER|=1<<12;         //CH4輸出使能          
  22.         TIM1->CCER|=1<<0;          //CH1輸出使能       
  23.         TIM1->BDTR |= 1<<15;       //TIM1必須要這句話才能輸出PWM
  24.         TIM1->CR1=0x8000;          //ARPE使能
  25.         TIM1->CR1|=0x01;          //使能定時器1                                                                                           
  26. }

復制代碼
  1. #include "encoder.h"

  2. /**************************************************************************
  3. 函數功能:把TIM2初始化為編碼器接口模式
  4. 入口參數:無
  5. 返回  值:無
  6. **************************************************************************/
  7. void Encoder_Init_TIM2(void)
  8. {
  9.         RCC->APB1ENR|=1<<0;     //TIM2時鐘使能
  10.         RCC->APB2ENR|=1<<2;    //使能PORTA時鐘
  11.         GPIOA->CRL&=0XFFFFFF00;//PA0 PA1
  12.         GPIOA->CRL|=0X00000044;//浮空輸入
  13.         /* 把定時器初始化為編碼器模式 */
  14.         TIM2->PSC = 0x0;//預分頻器
  15.         TIM2->ARR = ENCODER_TIM_PERIOD-1;//設定計數器自動重裝值
  16.   TIM2->CCMR1 |= 1<<0;          //輸入模式,IC1FP1映射到TI1上
  17.   TIM2->CCMR1 |= 1<<8;          //輸入模式,IC2FP2映射到TI2上
  18.   TIM2->CCER |= 0<<1;           //IC1不反向
  19.   TIM2->CCER |= 0<<5;           //IC2不反向
  20.         TIM2->SMCR |= 3<<0;                  //SMS='011' 所有的輸入均在上升沿和下降沿有效
  21.         TIM2->CR1 |= 0x01;    //CEN=1,使能定時器
  22. }
  23. /**************************************************************************
  24. 函數功能:把TIM4初始化為編碼器接口模式
  25. 入口參數:無
  26. 返回  值:無
  27. **************************************************************************/
  28. void Encoder_Init_TIM4(void)
  29. {
  30.         RCC->APB1ENR|=1<<2;     //TIM4時鐘使能
  31.         RCC->APB2ENR|=1<<3;    //使能PORTb時鐘
  32.         GPIOB->CRL&=0X00FFFFFF;//PB6 PB7
  33.         GPIOB->CRL|=0X44000000;//浮空輸入
  34.         /* 把定時器初始化為編碼器模式 */
  35.         TIM4->PSC = 0x0;//預分頻器
  36.         TIM4->ARR = ENCODER_TIM_PERIOD-1;//設定計數器自動重裝值
  37.   TIM4->CCMR1 |= 1<<0;          //輸入模式,IC1FP1映射到TI1上
  38.   TIM4->CCMR1 |= 1<<8;          //輸入模式,IC2FP2映射到TI2上
  39.   TIM4->CCER |= 0<<1;           //IC1不反向
  40.   TIM4->CCER |= 0<<5;           //IC2不反向
  41.         TIM4->SMCR |= 3<<0;                  //SMS='011' 所有的輸入均在上升沿和下降沿有效
  42.         TIM4->CR1 |= 0x01;    //CEN=1,使能定時器
  43. }
  44. /**************************************************************************
  45. 函數功能:單位時間讀取編碼器計數
  46. 入口參數:定時器
  47. 返回  值:速度值
  48. **************************************************************************/
  49. int Read_Encoder(u8 TIMX)
  50. {
  51.     int Encoder_TIM;   
  52.    switch(TIMX)
  53.          {
  54.            case 2:  Encoder_TIM= (short)TIM2 -> CNT;  TIM2 -> CNT=0;break;
  55.                  case 3:  Encoder_TIM= (short)TIM3 -> CNT;  TIM3 -> CNT=0;break;       
  56.                  case 4:  Encoder_TIM= (short)TIM4 -> CNT;  TIM4 -> CNT=0;break;       
  57.                  default:  Encoder_TIM=0;
  58.          }
  59.                 return Encoder_TIM;
  60. }


復制代碼



所有資料51hei提供下載:
電機速度閉環控制(代碼詳細注釋).rar (177.07 KB, 下載次數: 238)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:20672 發表于 2018-10-2 14:06 | 只看該作者
謝謝分享、、、
回復

使用道具 舉報

板凳
ID:470848 發表于 2019-1-20 13:33 | 只看該作者
很不錯
回復

使用道具 舉報

地板
ID:537647 發表于 2019-5-15 16:20 | 只看該作者
沒看懂。。。
回復

使用道具 舉報

5#
ID:540349 發表于 2019-5-16 23:40 | 只看該作者
謝謝樓主,編程不容易
回復

使用道具 舉報

6#
ID:537744 發表于 2019-5-17 13:57 | 只看該作者
謝謝分享!
回復

使用道具 舉報

7#
ID:583076 發表于 2019-7-25 09:46 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

8#
ID:470428 發表于 2019-8-5 15:32 | 只看該作者
謝謝分享,下來學習,感覺講的很詳細
回復

使用道具 舉報

9#
ID:620291 發表于 2019-10-8 00:06 | 只看該作者

謝謝樓主,編程不容易
回復

使用道具 舉報

10#
ID:400671 發表于 2019-10-8 09:17 | 只看該作者

很不錯
回復

使用道具 舉報

11#
ID:783793 發表于 2020-6-20 11:09 | 只看該作者
感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜免费视频 | 亚洲国产成人一区二区 | 久久久久久a | 亚洲视频www | 国产精品久久久av | 狠狠爱网址 | 精品九九 | 久久国产综合 | 国产91久久久久蜜臀青青天草二 | 日本电影韩国电影免费观看 | 日韩欧美综合在线视频 | 久久久久中文字幕 | 久久中文字幕一区 | 伊人免费在线观看 | 久久免费精品 | 人人看人人爽 | 91在线精品秘密一区二区 | 天天影视亚洲综合网 | 国产精品亚洲一区二区三区在线 | 久久国产精品久久久久久 | 三级免费网| www.天天操.com | 精品二区 | 亚洲精品中文在线观看 | 亚洲国产一区二区三区在线观看 | 久久精品成人一区 | 蜜桃在线一区二区三区 | 欧美日韩中| 国产精品毛片av一区 | 黑人精品xxx一区一二区 | 国产一级片av | 日韩和的一区二区 | 中文字幕av一区二区三区 | 欧美日韩午夜精品 | 91电影 | 精品欧美乱码久久久久久 | 婷婷91| 中文字幕乱码一区二区三区 | 欧美成人精品欧美一级 | 国产91视频免费 | 国产精品完整版 |