STM32正交增量編碼器
單片機源程序如下(外部中斷法):
- #include "STM32F1.h"
- u16 Parameter = 20; //輸入編碼器線數
- u16 Count,Old_Temp,Temp;
- int main(void)
- {
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- LCD_Init(); //初始化LCD
- Encode_Init();
- POINT_COLOR=BLUE; //字體顏色
- LCD_ShowString(75,150,200,16,16,"Count:");
- LCD_ShowNum(125,150,0,1,16);
- LCD_ShowNum(135,150,0,1,16);
- LCD_ShowNum(145,150,0,1,16);
- LCD_ShowNum(155,150,0,1,16);
- while(1)
- {
- Old_Temp = Temp; //獲取先前數值
- Temp = Count; //獲取當前數值
- if(Old_Temp != Count) //如果先前的計數值與當前計數值不相等,說明編碼器已轉動打印當前數值
- {
- printf("數值 = %d\n",Count); //串口打印數值*/
- LCD_ShowNum(125,150,Count/1000,1,16); //液晶顯示數值
- LCD_ShowNum(135,150,(Count%1000)/100,1,16);
- LCD_ShowNum(145,150,(Count%100)/10,1,16);
- LCD_ShowNum(155,150,Count%10,1,16);
- }
- }
- }
復制代碼
查詢法:
- #include "STM32F1.h"
- u16 Parameter = 512; //輸入編碼器線數
- u16 Count,Old_Count;
- int main(void)
- {
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- LCD_Init(); //初始化LCD
- TIM4_Init(); //初始化TIM4為編碼器借口模式
- POINT_COLOR=BLUE; //字體顏色
- LCD_ShowString(75,150,200,16,16,"Count:");
- LCD_ShowNum(125,150,0,1,16);
- LCD_ShowNum(135,150,0,1,16);
- LCD_ShowNum(145,150,0,1,16);
- LCD_ShowNum(155,150,0,1,16);
- while(1)
- {
- Old_Count = Count; //獲取先前的計數值
- Count = TIM4->CNT; //獲取編碼器當前數值
- if(Old_Count != Count) //如果先前的計數值與當前計數值不相等,說明編碼器已轉動打印當前數值
- {
- printf("數值 = %d\n",Count); //串口打印數值
- LCD_ShowNum(125,150,Count/1000,1,16); //液晶顯示數值
- LCD_ShowNum(135,150,(Count%1000)/100,1,16);
- LCD_ShowNum(145,150,(Count%100)/10,1,16);
- LCD_ShowNum(155,150,Count%10,1,16);
- }
- }
- }
復制代碼
所有資料51hei提供下載:
STM32正交編碼器_外部中斷.rar
(301.98 KB, 下載次數: 114)
2018-11-4 08:32 上傳
點擊文件名下載附件
STM32正交編碼器.rar
(300.49 KB, 下載次數: 62)
2018-11-4 08:32 上傳
點擊文件名下載附件
|