亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32定時器中斷掃描旋轉編碼器

[復制鏈接]
跳轉到指定樓層
樓主
用定時器中斷對編碼器進行掃描
下面是兩站編碼器的波形圖,前面這張是編碼器反轉的,后面這張是編碼器正轉的。在圖中可以看到,編碼器反轉時,A的下降沿對應B的高電平,編碼器正轉時,A的下降沿對應B的低電平。利用外部中斷可以對編碼器進行讀取,但是編碼器在旋轉的過程中,編碼器可能存在抖動,為了在讀取編碼器的同時消除抖動,可以采用定時器中斷的方法對編碼器進行讀取。

利用定時器中斷,我們可以對編碼器進行采樣,即每間隔一定的時間對編碼器兩個引腳進行讀取。編碼器引腳A和引腳PA11相連,編碼器引腳B和PA10相連,首先將引腳A的狀態保存在一個變量中,然后刷新引腳A的狀態,通過比較A引腳前后兩次的狀態來決定是否對B引腳進行讀取。


定時器中斷函數:
  1. void TIM2_IRQHandler(void)//定時器2中斷函數
  2. {
  3.         if(TIM_GetITStatus(TIM2,TIM_IT_Update))
  4.         {
  5.                 Pin11_LastStatus=Pin11_NowStatus;//保存上一次A引腳狀態
  6.                 Pin11_NowStatus=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11);//刷新A引腳狀態
  7.                 if(Pin11_LastStatus==1 && Pin11_NowStatus==0)//如果引腳上一次為高電平,這一次為低電平
  8.                 {
  9.                         if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==0)//判斷引腳B的狀態
  10.                         {
  11.                                 i++;
  12.                                 if(i>20)i=0;
  13.                         }else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==1)//判斷引腳B的狀態
  14.                         {               
  15.                                 i--;
  16.                                 if(i<0)i=20;
  17.                         }
  18.                 }
  19.         }
  20.         TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
  21. }
復制代碼





數碼管&amp;編碼器.7z

1.06 MB, 下載次數: 33, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表