当前位置: 首页 > news >正文

wordpress 本地 上传太原seo推广

wordpress 本地 上传,太原seo推广,网站建设 合优网络,dw如何做网站登陆验证一、概述 1、Encoder Interface 编码器接口概念 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用…

一、概述

1、Encoder Interface 编码器接口概念

  • 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
  • 每个高级定时器和通用定时器都拥有1个编码器接口
  • 两个输入引脚借用了输入捕获的通道1和通道2(只能是通道1)

正交编码器:

其实只测其中一相就能测出速度,两相可以知道编码器正传还是反转。

编码器接口基本结构:

2、工作模式

TI1指的是通道1, TI2指的是通道2。

TI1和TI2均不反相(反相就是电平翻转):

TI或TI2反相:

虽然TI1的波形在图里没有翻转,但是你会发现,TI1上升沿,TI2为低电平,应该为向上计数,而图中是向下计数,所以TI1或TI2反相为反相计数器才会向下计数,可以对着表格测试一下。CNT向上计数表示编码器正转,CNT向下计数表示编码器反转。

二、用旋转编码器进行手动模拟 

完整代码如下:

  • 定时器定时1s

Timer.c:

#include "stm32f10x.h"                  // Device headerextern uint16_t Num;
void Timer_Init(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;NVIC_InitTypeDef NVIC_InitStructure;//1.配置时钟,用那个外设RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//2.内部时钟配置TIM_InternalClockConfig(TIM2);//3.配置时基单元TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;     //滤波频率TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; //计数方式TIM_TimeBaseInitStruct.TIM_Period=10000-1;                 //自动重装载寄存器ARRTIM_TimeBaseInitStruct.TIM_Prescaler=7200-1;               //预分频器TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;            //这个是高级定时器才用的,这里不用,给0TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);TIM_ClearFlag(TIM2,TIM_FLAG_Update);                        //清除中断标志位//4.配置中断输出控制,打开中断TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//5.NVIC配置NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStructure);//6.启动定时器TIM_Cmd(TIM2,ENABLE);
}

Timer.h:

#ifndef _TIMER_H
#define _TIMER_Hvoid Timer_Init(void);#endif
  • 编码器接口

Encoder.c:

这里没有考虑定时器溢出情况。

#include "stm32f10x.h"                  // Device headervoid Encoder_Init(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;TIM_ICInitTypeDef  TIM_ICInitStruct;GPIO_InitTypeDef GPIO_InitStructure;//1.配置时钟,用那个外设RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;GPIO_Init(GPIOA, &GPIO_InitStructure);//2.配置时基单元TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;     //滤波频率TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; //计数方式,向上TIM_TimeBaseInitStruct.TIM_Period=65535-1;                 //自动重装载寄存器ARR,让CNT达到最大量程TIM_TimeBaseInitStruct.TIM_Prescaler=1-1;                  //预分频器TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);//3.初始化捕获单元TIM_ICStructInit(&TIM_ICInitStruct);                          //对结构体进行初始化,防止产生其他影响TIM_ICInitStruct.TIM_Channel=TIM_Channel_1;                   //选择输入通道TIM_ICInitStruct.TIM_ICFilter=0xF;                            //滤波//TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Rising;      //选择极性,上升沿TIM_ICInit(TIM3,&TIM_ICInitStruct);TIM_ICInitStruct.TIM_Channel=TIM_Channel_2;                   //选择输入通道TIM_ICInitStruct.TIM_ICFilter=0xF;                            //滤波//TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Rising;      /选择极性,上升沿,表示电平不反相TIM_ICInit(TIM3,&TIM_ICInitStruct);//4.配置编码器接口TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12, TIM_ICPolarity_Falling,TIM_ICPolarity_Rising);//5.启动定时器TIM_Cmd(TIM3,ENABLE);}int16_t Encoder_Get(void)
{int16_t Temp;Temp=TIM_GetCounter(TIM3);TIM_SetCounter(TIM3,0);return Temp;   }

Encoder.h:

#ifndef _ENCODER_H
#define _ENCODER_Hint16_t Encoder_Get(void);void Encoder_Init(void);#endif

main.c:

#include  "stm32f10x.h"                  // Device header
#include  "OLED.h"
#include  "delay.h"
#include  "Timer.h"
#include  "Encoder.h"int16_t speed;int main(void)
{OLED_Init();Timer_Init();Encoder_Init();OLED_ShowString(1,1,"CNT:");while(1) {OLED_ShowSignedNum(1,5,speed,5);Delay_ms(1000);}}void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET){speed=Encoder_Get();TIM_ClearITPendingBit(TIM2,TIM_IT_Update);  //更新中断就是产生一个中断标志位}}

http://www.tj-hxxt.cn/news/97329.html

相关文章:

  • 建站下载专用网站怎样申请网站注册
  • 找个网站懂的网站企业培训十大热门课程
  • jsp做网站下载图片搜索引擎优化员简历
  • 网站代理工具百度推广怎么弄
  • 如何做网站的301重定向百度免费发布信息网站
  • wp网站如何做多级联动筛选框如何制作网址链接
  • 玉林网站制作怎么建立网站平台
  • 小米路由可以做网站吗广东知名seo推广多少钱
  • 网站推他网站湖南seo优化价格
  • 常熟经济技术开发区人才网网站优化排名公司
  • 网站外包建设 请示郑州seo外包顾问热狗
  • 100个免费设计网站软文标题
  • 永久 网址 免费对网站的建议和优化
  • 原材料价格查询网站软文代发价格
  • wordpress评论添加emoji表情山西seo推广
  • 网站栏目规划常见的网络营销方式
  • 上海做高端网站建宁波seo关键词排名优化
  • 宝贝我想跟你做网站爱站查询工具
  • vs做网站应该新建什么百度分公司
  • 定制网站哪个好怎样建网站?
  • 杭州网络公司网站网络营销收获与体会
  • 上海做网站好的公司正规拉新推广平台有哪些
  • dede网站建设企业如何做网站
  • 软件外包公司如何找客户seo网站优化优化排名
  • 乐器产品主要在什么网站做推广营销方案包括哪些内容
  • 工商注册登记系统官网北京官网优化公司
  • 北京专业做网站怎么样重庆高端品牌网站建设
  • 和平东路网站建设福州短视频seo推荐
  • 软件开发赚钱多吗天津关键词优化网排名
  • 模块化局域网网站建设软件全网网站快速排名推广软件