找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4603|回复: 3
收起左侧

STM32正交增量编码器源码 外部中断与查询法2个程序

[复制链接]
ID:276828 发表于 2018-11-4 08:32 | 显示全部楼层 |阅读模式
STM32正交增量编码器

单片机源程序如下(外部中断法):
  1. #include "STM32F1.h"

  2. u16        Parameter = 20;                                                                                                                                                //输入编码器线数
  3. u16 Count,Old_Temp,Temp;

  4. int main(void)
  5. {
  6.         delay_init();                                                                                                                                                     //延时函数初始化          
  7.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  8.         uart_init(115200);                                                                                                                                         //串口初始化为115200
  9.         LCD_Init();                                                                                                                                                                   //初始化LCD  
  10.         Encode_Init();
  11.         POINT_COLOR=BLUE;                                                                                                                                                //字体颜色
  12.         LCD_ShowString(75,150,200,16,16,"Count:");
  13.         LCD_ShowNum(125,150,0,1,16);
  14.         LCD_ShowNum(135,150,0,1,16);
  15.         LCD_ShowNum(145,150,0,1,16);
  16.         LCD_ShowNum(155,150,0,1,16);
  17.   while(1)
  18.         {
  19.                 Old_Temp = Temp;                                                                                                                                        //获取先前数值
  20.                 Temp = Count;                                                                                                                                                        //获取当前数值
  21.                 if(Old_Temp != Count)                                                                                                                        //如果先前的计数值与当前计数值不相等,说明编码器已转动打印当前数值
  22.                 {
  23.                         printf("数值 = %d\n",Count);                                                                                //串口打印数值*/
  24.                         LCD_ShowNum(125,150,Count/1000,1,16);                                                //液晶显示数值
  25.                         LCD_ShowNum(135,150,(Count%1000)/100,1,16);
  26.                         LCD_ShowNum(145,150,(Count%100)/10,1,16);
  27.                         LCD_ShowNum(155,150,Count%10,1,16);
  28.                 }               
  29.         }
  30. }
复制代码

查询法:
  1. #include "STM32F1.h"

  2. u16        Parameter = 512;                                                                                                                                        //输入编码器线数
  3. u16 Count,Old_Count;

  4. int main(void)
  5. {
  6.         delay_init();                                                                                                                                                     //延时函数初始化          
  7.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  8.         uart_init(115200);                                                                                                                                         //串口初始化为115200
  9.         LCD_Init();                                                                                                                                                                   //初始化LCD  
  10.         TIM4_Init();                                                                                                                                                                //初始化TIM4为编码器借口模式
  11.         POINT_COLOR=BLUE;                                                                                                                                                //字体颜色
  12.         LCD_ShowString(75,150,200,16,16,"Count:");
  13.         LCD_ShowNum(125,150,0,1,16);
  14.         LCD_ShowNum(135,150,0,1,16);
  15.         LCD_ShowNum(145,150,0,1,16);
  16.         LCD_ShowNum(155,150,0,1,16);
  17.   while(1)
  18.         {
  19.                 Old_Count = Count;                                                                                                                                //获取先前的计数值
  20.                 Count = TIM4->CNT;                                                                                                                                //获取编码器当前数值
  21.                 if(Old_Count != Count)                                                                                                                //如果先前的计数值与当前计数值不相等,说明编码器已转动打印当前数值
  22.                 {
  23.                         printf("数值 = %d\n",Count);                                                                                //串口打印数值
  24.                         LCD_ShowNum(125,150,Count/1000,1,16);                                                //液晶显示数值
  25.                         LCD_ShowNum(135,150,(Count%1000)/100,1,16);
  26.                         LCD_ShowNum(145,150,(Count%100)/10,1,16);
  27.                         LCD_ShowNum(155,150,Count%10,1,16);
  28.                 }               
  29.         }
  30. }
复制代码


所有资料51hei提供下载:
STM32正交编码器_外部中断.rar (301.98 KB, 下载次数: 112)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:121304 发表于 2019-7-4 17:53 | 显示全部楼层
多谢了
回复

使用道具 举报

ID:614301 发表于 2019-9-21 09:32 | 显示全部楼层
非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表