找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2106|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32定時(shí)器中斷掃描旋轉(zhuǎn)編碼器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:970990 發(fā)表于 2022-12-28 09:38 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用定時(shí)器中斷對(duì)編碼器進(jìn)行掃描
下面是兩站編碼器的波形圖,前面這張是編碼器反轉(zhuǎn)的,后面這張是編碼器正轉(zhuǎn)的。在圖中可以看到,編碼器反轉(zhuǎn)時(shí),A的下降沿對(duì)應(yīng)B的高電平,編碼器正轉(zhuǎn)時(shí),A的下降沿對(duì)應(yīng)B的低電平。利用外部中斷可以對(duì)編碼器進(jìn)行讀取,但是編碼器在旋轉(zhuǎn)的過(guò)程中,編碼器可能存在抖動(dòng),為了在讀取編碼器的同時(shí)消除抖動(dòng),可以采用定時(shí)器中斷的方法對(duì)編碼器進(jìn)行讀取。

利用定時(shí)器中斷,我們可以對(duì)編碼器進(jìn)行采樣,即每間隔一定的時(shí)間對(duì)編碼器兩個(gè)引腳進(jìn)行讀取。編碼器引腳A和引腳PA11相連,編碼器引腳B和PA10相連,首先將引腳A的狀態(tài)保存在一個(gè)變量中,然后刷新引腳A的狀態(tài),通過(guò)比較A引腳前后兩次的狀態(tài)來(lái)決定是否對(duì)B引腳進(jìn)行讀取。


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





數(shù)碼管&amp;編碼器.7z

1.06 MB, 下載次數(shù): 33, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表