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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

dspf2812實現電機檢測霍爾傳感器程序,實現自動加速和正反轉

[復制鏈接]
跳轉到指定樓層
樓主
dspf2812實現電機檢測霍爾傳感器,實現自動加速和正反轉


  1. #include "DSP281x_Device.h"     // DSP281x Headerfile Include File
  2. #include "DSP281x_Examples.h"   // DSP281x Examples Include File
  3. //GPIOA的宏定義
  4. //GPIO0-5輸出模式  123
  5. #define          PA0        GpioDataRegs.GPADAT.bit.GPIOA0
  6. #define          PA1        GpioDataRegs.GPADAT.bit.GPIOA1
  7. #define          PA2        GpioDataRegs.GPADAT.bit.GPIOA2
  8. #define          PA3        GpioDataRegs.GPADAT.bit.GPIOA3
  9. #define          PA4        GpioDataRegs.GPADAT.bit.GPIOA4
  10. #define          PA5        GpioDataRegs.GPADAT.bit.GPIOA5
  11. //GPIO8-10輸入模式
  12. #define          PA8   GpioDataRegs.GPADAT.bit.GPIOA8
  13. #define          PA9   GpioDataRegs.GPADAT.bit.GPIOA9
  14. #define          PA10  GpioDataRegs.GPADAT.bit.GPIOA10

  15. //函數聲明
  16. interrupt void cpu_timer0_isr(void);  //中斷函數的聲明
  17. void gpio_init();                //GPIO配置函數聲明
  18. void fuzhi(int a,int b,int c,int d,int e,int f);  //給GPIOA0-5賦值函數聲明
  19. void  mode(int a);          //狀態選擇和GPIOA8-10讀取輸出

  20. int  driver_state=1;  //中斷查詢確定在狀態多少,driver_state取值1-6個狀態
  21. int  rotor_code;  //存放GPIOA8-10的輸出狀態

  22. void main(void)  //主函數
  23. {
  24.    InitSysCtrl();//初始化系統
  25.    gpio_init();  //GPIOA初始化
  26.    DINT;                         //關中斷
  27.    IER = 0x0000;
  28.    IFR = 0x0000;
  29.    InitPieCtrl();//初始化PIE
  30.    InitPieVectTable();//初始化PIE中斷矢量表
  31.    EALLOW;  
  32.    PieVectTable.TINT0 = & cpu_timer0_isr;  //定時器0位中斷0
  33.    EDIS;
  34.    InitCpuTimers();   // cpu初始化
  35.    //定時器0的中斷時間設置 150*1000000/150MHZ=1s
  36.    ConfigCpuTimer(&CpuTimer0, 150, 1000000);
  37.    StartCpuTimer0();          //啟動定時器0
  38.    IER |= M_INT1;                  //啟動cpu給定時器時鐘
  39.    PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // 中斷0在向量表中的1組第7個
  40.    EINT;   // 總中斷 INTM 使能
  41.    ERTM;   // 使能總實時中斷 DBGM
  42.    for(;;);  //一直等待中斷來
  43. }
  44. interrupt void cpu_timer0_isr(void)   //中斷服務函數
  45. {       
  46.         PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //0x0001賦給12組中斷ACKnowledge寄存器,對其全部清除,不接受其他中斷
  47.         CpuTimer0Regs.TCR.bit.TIF=1; // 定時到了指定時間,標志位置位,清除標志
  48.         CpuTimer0Regs.TCR.bit.TRB=1;  // 重載Timer0的定時數據
  49.         if(driver_state >= 6)
  50.                 driver_state=0;   //狀態達到最大值6后復位0
  51.         mode(driver_state);   //根據狀態值,選擇模式
  52.         driver_state++;
  53. }
  54. //模式選擇和讀取GPIO8-10的值
  55. void  mode(int a)   //給 GPIOA 0 2 4 1 3 5賦值
  56. {
  57.         switch(a)
  58.                 {
  59.                         case 1:
  60.                                 fuzhi(1,0,0,1,1,0);  //1,0,0,1,1,0
  61.                                 break;  //狀態1
  62.                         case 2:
  63.                                 fuzhi(1,0,0,1,0,1);  //1,0,0,1,0,1
  64.                                 break;        //狀態2
  65.                         case 3:
  66.                                 fuzhi(0,1,0,0,1,1);  //0,1,0,0,1,1
  67.                                 break;        //狀態3
  68.                         case 4:
  69.                                 fuzhi(0,1,0,1,1,0); //0,1,0,1,1,0
  70.                                 break;        //狀態4
  71.                         case 5:
  72.                                 fuzhi(0,0,1,1,0,1);  //0,0,1,1,0,1
  73.                                 break;        //狀態5
  74.                         case 6:
  75.                                 fuzhi(0,0,1,0,1,1);  //0,0,1,0,1,1
  76.                                 break;        //轉態6
  77.                         default:
  78.                                 fuzhi(1,0,0,1,1,0);//1,0,0,1,1,0
  79.                                 break;                //默認狀態1
  80.                 }
  81.         //為了求取rotor_code的值,把GPIOA8-10設置有權重
  82.         int sum=PA10*4+PA9*2+PA8*1;
  83.         if(sum==0)
  84.                 rotor_code=0;
  85.         if(sum==1)
  86.                 rotor_code=1;
  87.         if(sum==2)
  88.                 rotor_code=10;
  89.         if(sum==3)
  90.                 rotor_code=11;
  91.         if(sum==4)
  92.                 rotor_code=100;
  93.         if(sum==5)
  94.                 rotor_code=101;
  95.         if(sum==6)
  96.                 rotor_code=110;
  97.         if(sum==7)
  98.                 rotor_code=111;
  99. }
  100. //給GPIOA0-5賦值
  101. void fuzhi(int a,int b,int c,int d,int e,int f)
  102. {
  103.         PA0=a;
  104.         PA2=b;
  105.         PA4=c;
  106.         PA1=d;
  107.         PA3=e;
  108.         PA5=f;
  109. }
  110. //GPIOA的端口模式選擇
  111. void gpio_init()
  112. {//設置GPIOA0-5是輸出模式   GPIOA8-10是輸入模式
  113.   EALLOW;
  114.   GpioMuxRegs.GPADIR.bit.GPIOA0 = 1;  // GPIOA0設置為輸出
  115.   GpioMuxRegs.GPADIR.bit.GPIOA1 = 1;
  116.   GpioMuxRegs.GPADIR.bit.GPIOA2 = 1;
  117.   GpioMuxRegs.GPADIR.bit.GPIOA3 = 1;
  118.   GpioMuxRegs.GPADIR.bit.GPIOA4 = 1;
  119.   GpioMuxRegs.GPADIR.bit.GPIOA5 = 1;// GPIOA5設置為輸出


  120.   GpioMuxRegs.GPADIR.bit.GPIOA8 = 0;  //GPIOA8設置為輸入
  121.   GpioMuxRegs.GPADIR.bit.GPIOA9 = 0;  //  設置為輸入
  122.   GpioMuxRegs.GPADIR.bit.GPIOA10 = 0;  // GPIOA10 設置為輸入

  123. }

  124. //===========================================================================
  125. // No more.
  126. //===========================================================================
復制代碼


HW1_2019217472_P1.rar

317.63 KB, 下載次數: 14, 下載積分: 黑幣 -5

HW1_2019217472_P2.rar

317.92 KB, 下載次數: 11, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲精品国产欧美 | jav成人av免费播放 | 99精品电影| 国产亚洲精品精品国产亚洲综合 | www.se91 | 黄片毛片免费观看 | 国产精品18毛片一区二区 | 国产在线一区二区三区 | 成人黄色电影在线播放 | 国产精品美女www | 第四色影音先锋 | 中文字幕一区在线观看视频 | 最新国产精品 | 国产精品a免费一区久久电影 | 国产精品成人久久久久 | 日韩精品成人 | av黄色在线| 欧美日韩电影免费观看 | 综合久久99| 九一精品 | 欧美黄色一级毛片 | 不卡一区二区三区四区 | 国产一区二区在线免费播放 | 亚洲精品乱 | 久久久影院 | 亚洲一区二区三区在线 | 精品视频一区二区三区四区 | 免费激情网站 | 国产一区二区三区免费视频 | 最近中文字幕第一页 | 亚洲色图在线观看 | 国产福利久久 | 特一级毛片 | 超碰最新在线 | 亚洲啪啪一区 | 日韩精品无码一区二区三区 | 国产一区二区三区www | 99爱国产 | 欧美成人影院在线 | 美日韩中文字幕 | av在线播放网址 |