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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

mpc5643l定時器捕捉測量頻率 系統初始化等源碼分享

[復制鏈接]
跳轉到指定樓層
樓主
包括mpc5643l的工程代碼

單片機源程序如下:

  1. /*************************************************************************
  2. 【平    臺】MPC5643L
  3. 【編    寫】
  4. 【版    本】V1.0
  5. 【時    間】
  6. 【功    能】1.通過8PIN撥碼開關輸入閾值轉速值("BM_INPUT.h");
  7.                         2.初始化系統,包括看門狗、系統時鐘、外設時鐘、中斷初始化(MPC5643L_SysCtrl.h")
  8.                         3.gpio輸出電平控制led,報警和停機"TASK_LED.h"
  9.                         4.脈沖輸出功能"OPWM.h"
  10.                         5,轉速輸入測頻率,計算轉速,比較大小"TIMER_ECT.h"
  11.                         6,超速測試按鍵輸入函數Key_OVERSPEED.h                       
  12. *************************************************************************/
  13. /*******************頭文件******************/
  14. #include "MPC5643L.h"            
  15. #include "MPC5643L_SysCtrl.h"                                           //系統控制函數
  16. #include "TASK_LED.h"                                                   //GPIO輸出
  17. #include "Etimer_OutputPulseWidth.h"                      //脈沖輸出
  18.                                           

  19. #include "Key_OverspeedTest.h"                                      //超速測試復位鍵掃描                                   
  20. #include "TIMER_ECT.h"
  21. #include "FLEXCAN.h"
  22. #include "frequecythershord_input.h"                                //撥碼開關輸入函數
  23. #include "config_output.h"                                                        //GPIO輸出


  24. /****************全局變量定義**************/
  25. uint8_t compare(uint8_t num1,uint8_t num2)

  26. {
  27.         if(num1 < (uint8_t)(num2/2))
  28.         {
  29. //                init_OUTPUT(7,0);
  30.                 return 1;
  31.        
  32.         }
  33.        
  34.         else if(num1 > num2)
  35.         {
  36. //                init_OUTPUT(7,0);
  37.                 return 0;
  38.        
  39.         }
  40.        
  41.         else
  42.         {
  43. //                init_OUTPUT(7,0);
  44.                 return 2;

  45.         }
  46. }

  47. uint16_t main(void)
  48. {
  49.         uint8_t Result;                                                        //撥碼開關輸入pin配置
  50.         float temp_bm;                                                        //頻率閾值定義
  51.         uint8_t  Flag_HalfSpeedWSE;                                                                     //半速不停機測試標志位
  52.         uint8_t  Flag_HalfSpeedSE;                                                                      //半速停機測試標志位
  53.         uint8_t  Flag_OverSpeedWSE;                                                                     //超速不停機測試標志位
  54.         uint8_t  Flag_OverSpeedSE;                                                                      //超速停機測試標志位
  55.         InitSysCtrl();                                                        //初始化系統時鐘,中斷,看門狗,外設時鐘
  56.        
  57.         init_OUTPUT(7,1);
  58. //        init_OUTPUT(7,0);                                                //上電LED燈亮

  59.         init_OUTPUT(81,1);                                                //LED_green正常
  60.         init_OUTPUT(73,1);                                                //LED_red        超速報警
  61.        
  62.         init_OUTPUT(2,0);                                                //脈沖輸出,開始輸出低電平
  63.        
  64.         init_OUTPUT(128,1);                                                //out1
  65.         init_OUTPUT(125,1);                                                //out2
  66.         init_OUTPUT(124,1);                                                //csbh_bf_out
  67.         init_OUTPUT(121,1);                                                //out3
  68.         init_OUTPUT(119,1);                                                //out5
  69.         init_OUTPUT(117,1);                                     //out6

  70.         Init_BM_COFIG();                                                //撥碼開關輸入配置

  71.         InitEtimer1_3();
  72.        
  73.         INTC_InstallINTCInterruptHandler(ISRICEimer, Source_Etimer1_3, Priority);
  74.        
  75.         Init_opweTimer0();
  76.        
  77.         INTC_InstallINTCInterruptHandler(eTimer_OPWisr, Source_Etimer0_0, Priority);
  78.        
  79.         INTC.CPR_PRC0.R = 0;                                                                                                           //定義優先級

  80.         InitCan1();
  81.        
  82.         InitCan0();

  83.         INTC_InstallINTCInterruptHandler(RecieveMsg,Source_Flexcan,Priority);        //開啟CAN_1接收中斷

  84.         ETIMER_1.CHANNEL[3].CCCTRL.B.ARM = 1;                                                                      //開始捕捉
  85.        
  86.         while(1)
  87.         {
  88.             float bj = 78;
  89.             
  90.             InputCaptureChannel3_FREQHandler();                                        //轉速處理函數

  91.                 temp_bm = threshold_value();
  92.                
  93.                 TransmitMsg();
  94. /*頻率比較,控制柴油機及報警功能*/
  95.                        
  96.                 temp_bm = threshold_value();
  97.                     
  98.                 Result = compare(bj,temp_bm);
  99.                
  100. /*測試按鍵輸入功能*/

  101.                 Skan_OverspeedPB1Key();                                                                                                  //掃描超速測試按鍵,進行超速測試
  102.                
  103.                 Flag_OverSpeedWSE = OverspeedSystemTest_WithStopEngi();                       //超速測試不停機標志       
  104.                 Flag_OverSpeedSE = OverspeedSystemTest_EngineStopeed();                       //超速停機測試標志
  105.                 Flag_HalfSpeedWSE = HalfSpeedTest_WithoutStoppingEngineKeep();                //半速不停機測試標志
  106.                 Flag_HalfSpeedSE = HalfSpeedTest_EngineStopeed();
  107. //                Skan_Key();                                        //掃描超速測試按鍵
  108. //                csfw_test();                //超速復位測試程序
  109. //                csbtj_test();               //超速不停機測試程序
  110. //                bsbtj_test();               //半速不停機測試程序
  111. //                bstj_test();                //半速停機測試程序
  112.                 switch(Result)
  113.                 {
  114.                         case 1:
  115.                                 if(Flag_OverSpeedWSE)                                                                                        // self-checking:超速測試不停機
  116.                                 {
  117.                                         SwitchOverspeedOut_WithoutStoppingEngine();                                        //不停機測試程序
  118.                                                                                
  119.                                 }
  120.                                        
  121.                                 if(Flag_OverSpeedSE)                                                                                        // self-checking:超速測試停機
  122.                                 {
  123.                                         SwitchOverspeedOut_EngineStopeed();                                                 //停機測試程序
  124.                                                                 
  125.                                                
  126.                                 }
  127.                                        
  128.                        
  129.                                 PressAfterFaultTest_Reset();                                                                   //超速保護復位測試,停機報警復位函數
  130.                                                                                                                                             //復位故障檢測函
  131.                                
  132.                                 if((Flag_OverSpeedWSE | Flag_OverSpeedSE | Flag_HalfSpeedWSE |Flag_HalfSpeedSE) == 0)        //無超速測試按鍵按下
  133.                                 {
  134.                                         SwitchOverspeedOut_EngineStopeed();                                                                                                        //停機測試程序
  135.                                                                                                                             
  136.                                 }
  137.                                        
  138.                                 break;
  139.                        

  140.                         case 0:
  141.                                 if(Flag_HalfSpeedWSE)                                                                                                                                        //self-checking:測試不停機
  142.                                 {
  143.                                         SwitchOverspeedOut_WithoutStoppingEngine();                                                                                        //不停機測試程序       
  144.                                 //        Inspection_WithStopEngi();                                                                                                          //不停機測試故障檢測函數
  145.                                 }
  146.                                
  147.                                        
  148.                                 if(Flag_HalfSpeedSE)                                                                                                                                        //self-checking:測試停機
  149.                                 {
  150.                                         SwitchOverspeedOut_EngineStopeed();                                                                                                        //停機測試程序
  151.                                 //        Inspection_StopEngi();                                                                                                                  //停機測試故障檢測函數
  152.                                 }
  153.                                        
  154.                                 PressAfterFaultTest_Reset();                                                                                                                        //超速保護復位測試,停機報警復位函數
  155.                                
  156.                                 if((Flag_OverSpeedWSE | Flag_OverSpeedSE | Flag_HalfSpeedWSE |Flag_HalfSpeedSE) == 0)        //無超速測按鍵按下
  157.                                 {
  158.                                         SwitchOverspeedOut_EngineStopeed();                                                                                                        //停機測試程序
  159.                                 //        Inspection_StopEngi();                                                                                                                          //停機測試故障檢測函數
  160.                                 }       
  161.                                
  162.                                 break;                                                //停機測試程序

  163.        
  164.                         case 2:
  165.                                 SystemInWorking0rder();                        //正常運行
  166.                                 break;
  167.                  
  168.                   }
  169.        
  170.         }
  171. ……………………

  172. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
mpc5643l_test.zip (275.48 KB, 下載次數: 15)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 波多野结衣先锋影音 | 欧美大片一区 | 国产精品久久久 | 日本在线你懂的 | 亚洲成av | 91亚洲精品在线观看 | 成人精品区 | 国产成人免费在线观看 | 国产精品精品久久久 | 一区二区三区四区免费在线观看 | 国产中文字幕在线观看 | 天天天天操 | 日本一区二区在线视频 | 成人在线视频网址 | 婷婷激情综合 | 精品视频一区二区三区在线观看 | 青娱乐一区二区 | 午夜影院在线播放 | 国产精品夜间视频香蕉 | 在线免费观看黄视频 | a天堂在线 | a级毛片免费高清视频 | 久久最新| 亚洲人成网亚洲欧洲无码 | 国产成人精品免费 | 亚洲乱码一区二区三区在线观看 | 国产精品久久久久久久久久久免费看 | 精品国产一区二区三区在线观看 | 蜜桃av人人夜夜澡人人爽 | 在线视频 中文字幕 | 欧美精品一区二区在线观看 | 免费毛片网站在线观看 | 日本一区二区三区在线观看 | 成人在线免费网站 | 国产 日韩 欧美 制服 另类 | 日韩中文字幕在线不卡 | 成人午夜免费视频 | 一区二区三区在线播放 | 91中文在线观看 | 看片国产 | 日本免费一区二区三区 |