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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32定時器捕獲,計算頻率成功例程源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:320528 發表于 2018-5-15 10:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
親自試過,調試成功

1.0  從此版本開始,代碼中所有變量都定義在sysconfig.h中

2.0  PB6接步進電機脈沖
     PC9接步進電機方向   
     PC8接電磁閥
     PC7接泄氣閥
     PC1接AD采樣

3.0  A5 A6 06 03 05 00     點動前進
     A5 A6 06 04 05 07     點動后退
     A5 A6 05 05 00        持續前進
     A5 A6 05 06 03        持續后退
     A5 A6 05 07 02        停止

單片機源程序如下:
  1. /********************************************************************************
  2. * 文件名  :main.c
  3. * 描述    :        
  4. * 實驗平臺:STM32開發板
  5. * 庫版本  :ST3.5.0
  6. * 作者    :liuzhen
  7. ********************************************************************************/
  8. #include "stm32f10x.h"
  9. #include "sysconfig.h"
  10. #include "usart1.h"
  11. #include "BSP.H"
  12. #include "led.h"
  13. #include "tim2.h"
  14. #include "pwm_output.h"
  15. #include "exti.h"
  16. #include "moto.h"
  17. #include "adc.h"
  18. //================================ 串口所用變量 ==============================================
  19. u8 Rx1Buffer[Rx1Buffer_Length];                //串口1接收數據緩沖區
  20. u8 Tx1Buffer[Tx1Buffer_Length];                //串口1發送數據緩沖區
  21. u8 Rx1Cnt=0;                                         //串口1接收數據計數
  22. u8 RX1_Recive_Frame_State=0;                         //串口1接收幀頭狀態,初始化位0
  23. u8 RX1_Recive_FrameCnt_State=0;         //串口1接收一幀數據的總長度(即一幀數據的第三個元素表示該幀的總長度)
  24. u8 RX1_Over_Flag=0;                                        //串口1接收數據完成標志位
  25. //=============================== 壓接機所用變量 ==============================================
  26. u8 Press_Mold_Length=0;                                   //定義壓膜長度
  27. u8 Press_Overlap=0;                                                                //定義疊壓長度
  28. u8 Press_Mold_Cnt=0;                                      //定義總壓膜次數               
  29. u16 Mid_Unpress_Length=0;                                  //定義中間不壓區長度
  30. u8 Press_Mold_Effect_Length=0;                //定義滑塊有效行走長度,等于壓膜長度-疊壓長度
  31. u8 Latest_PressQuality_Flag=0;          //上次壓接質量合格標志位
  32. u8 Current_Press_Cnt=0;           //定義當前壓膜編號
  33. u32 LeftDone_MoveRight_NeedPWMCnt=0;  //接續管左邊全部壓完,右移時需多少PWM回到右邊壓接初始點
  34. u8 Press_Cnt_OddEven_Flag=0;                            //總壓接次數為偶數是該位0,總壓接次數為奇數是該位1

  35. u8 Hydraumatic_80MPa_Flag=0;                 //液壓達到80MPa標志位
  36. u8 Hydropress_Reset_Flag=0;                 //液壓機復位標志位,如果液壓機不完全釋放,會影響滑臺前進
  37. u8 Hydropress_Finish_Onepress_Flag=0; //液壓機完成一次壓接標志位

  38. u8 Manual_ContinueMove_Flag=0;                           //手動下,持續控制滑臺行走
  39. u8 AutoPressTest_Start_Flag = 0;            //自動壓接檢測開始標志位,也是整個設備開始工作標志位
  40. u8 AutoPressTest_SlipStep_FinishFlag = 0;    //自動壓接檢測時,滑塊每完成一個最小單位的移動標志位
  41. u8 DiameterDetect_FinishFlag=0;                                //檢測裝置檢測完成標志位
  42. u8 SlidBlock_GoBackMove_Flag=0;                    //滑臺返工標志位,返回不合格處時,只需再次壓接,檢測裝置不需要檢測
  43. //============================= 滑臺步進電機所用變量 ===========================================
  44. float mm_PWMCnt=0.0;                          //滑塊行走1mm需要的脈沖數                       
  45. u32 PWMCnt=0;                                                                //當前輸出PWM脈沖,正方向加,反方向減
  46. u32 PWMAll=0;                                                                //記錄從開始到結束發出的PWM總數,默認正方向加,反方向減

  47. u8 Move_SequenceNO=0;                    //滑塊在第一壓接處Move_SequenceNO為0,下一壓機處Move_SequenceNO為1......
  48. /*=====================================================================
  49.         Move_order[0] == 1表示滑塊已處在第一模壓接處,開始壓接前默認處于第一模位置
  50.         Move_order[1] == 1表示滑塊開始向第二模壓接處移動
  51.         Move_order[2] == 1表示滑塊開始向第三模壓接處移動
  52.         。。。。。。
  53. =====================================================================*/
  54. u8 Move_order[30]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55.                                                                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  56.                                                                    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
  57. u16 Tim6_Frequency = 0;
  58. u16 Tim2_CH2 =0;       
  59. u16 Tim3_CH2 =0;
  60. u16 Tim4_CH2 =0;
  61. u16 Tim5_CH2 =0;                                                                         
  62. u16 Tim8_CH2 =0;
  63. u16 Tim1_CH2 =0;                                                                                 
  64. //============================= 壓力傳感器所用變量 ===========================================                                                                         
  65. __IO uint16_t ADC_ConvertedValue;                                                                         
  66. //================================= 函數原型聲明 ===========================================                                                                                                                  
  67. void Delay(__IO uint32_t nCount);         //延時函數原型聲明
  68. void GPIO_Configuration(void);      //TIM2 channel 2 pin (PA.01) configuration
  69. /*=================================================================================
  70. * 函數名:SYS_INIT
  71. * 描述  :外設初始化
  72. * 輸入  :無
  73. * 輸出  : 無
  74. * 調用  :內部調用
  75. ================================================================================*/
  76. void SYS_INIT(void)
  77. {
  78.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE);            //先打開APB2的復用時鐘AFIO
  79.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //使能SWD關閉JTAG,釋放被占用的引腳                  

  80.         USART1_Config(115200);                //配置串口1為:115200 8-N-1
  81.         LED_GPIO_Config();
  82.         GPIO_Configuration();     /* TIM2 channel 2 pin (PA.01) configuration */
  83.         Nvic_Init();                          
  84.         Tim6_Init(500);        //Tim6用于基本定時,Tim6_Init(500)代表500us中斷一次
  85.         Tim1_Init();           //Tim5捕獲初始化
  86.         Tim2_Init();                 //Tim2捕獲初始化
  87.         Tim3_Init();           //Tim3捕獲初始化
  88.         Tim4_Init();           //Tim4捕獲初始化
  89.         Tim8_Init();           //Tim5捕獲初始化
  90.         printf("\r\n 初始化完畢 \r\n");
  91. }
  92. /*=================================================================================
  93. * 函數名:main
  94. * 描述  :主函數
  95. ================================================================================*/
  96. int main(void)
  97. {        
  98.         SYS_INIT();
  99.         while(1)
  100.         {
  101.      ;
  102.         }
  103. }

  104. void GPIO_Configuration(void)
  105. {               
  106.   GPIO_InitTypeDef GPIO_InitStructure;
  107.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/* GPIOA clock enable */
  108.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/* GPIOA clock enable */
  109.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);/* GPIOA clock enable */
  110.   /* TIM2 channel 2 pin (PA.01) configuration */
  111.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_7;
  112.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  113.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  114.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  115.        
  116.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  117.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  118.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  119.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  120.        
  121.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  122.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  123.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  124.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  125.        
  126.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,ENABLE);  //開啟即將使用重映射的時鐘
  127.         GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE);                            //TIM1復用功能完全映射
  128.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  129.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  130.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  131.   GPIO_Init(GPIOE, &GPIO_InitStructure);
  132. }
  133. /*=================================================================================
  134. * 函數名:Delay
  135. * 描述  :延時函數
  136. * 輸入  :無
  137. * 輸出  : 無
  138. * 調用  :外部調用
  139. ================================================================================*/
  140. void Delay(__IO uint32_t nCount)
  141. {
  142.   for(; nCount != 0; nCount--);
  143. }
  144. //typedef enum { FAILED = 0, PASSED = !FAILED} TestStatus;
  145. //__IO TestStatus TransferStatus1 = FAILED;
  146. //TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);

  147. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/

復制代碼

所有資料51hei提供下載:
TimBuHuo_20160415wan.rar (470.25 KB, 下載次數: 46)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人碰人操 | 午夜寂寞影院在线观看 | 国产精品久久久久久中文字 | 日日骚av | 日韩二区三区 | 欧美男人天堂 | 亚洲看片网站 | 91视频进入 | 国产精品一区二区在线免费观看 | 欧美小视频在线观看 | 亚洲欧美综合精品另类天天更新 | 亚洲一区二区三区四区五区中文 | 久久久.com | 91久久久www播放日本观看 | 国产精品美女在线观看 | 亚洲人成在线观看 | 91一区二区三区 | 在线视频h | 欧美区日韩区 | 成人av一区二区三区 | 日韩a视频| 国产福利在线视频 | 91国在线 | 午夜成人免费视频 | 亚洲精品一区二区三区蜜桃久 | 欧美一区二区黄 | 欧洲一级毛片 | 久久久91精品国产一区二区三区 | 成人小视频在线观看 | 中文字幕av一区二区三区 | 韩日在线| 99re国产精品 | 欧美国产日本一区 | 亚洲欧洲一区二区 | 国产精品久久久久久 | 久久久高清 | 日本电影免费完整观看 | 国产精品不卡一区 | 黄色在线播放视频 | 五月婷婷亚洲 | 精品免费|