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

做的差的网站i深建官方网站

做的差的网站,i深建官方网站,edu网站一般谁做的,广州室内设计培训学校文章目录 前言一、正交编码器是什么#xff1f;二、使用步骤2.1开启时钟2.2配置编码器引脚 TIM3 CH1(PA6) CH2 (PA7)上拉输入2.3.初始化编码器时基2.4 初始化编码器输入2.5 配置编码器接口2.6 开启定时器2.7获取编码器数据 三、参考程序四、测试结果4.1测试方法4.2串口输出结果… 文章目录 前言一、正交编码器是什么二、使用步骤2.1开启时钟2.2配置编码器引脚 TIM3 CH1(PA6) CH2 (PA7)上拉输入2.3.初始化编码器时基2.4 初始化编码器输入2.5 配置编码器接口2.6 开启定时器2.7获取编码器数据 三、参考程序四、测试结果4.1测试方法4.2串口输出结果 总结 前言 提示这里可以添加本文要记录的大概内容 项目需要 提示以下是本篇文章正文内容下面案例可供参考 一、正交编码器是什么 在这里插入图片描述 二、使用步骤 2.1开启时钟 /*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //开启TIM3的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟2.2配置编码器引脚 TIM3 CH1(PA6) CH2 (PA7)上拉输入 /*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure); 2.3.初始化编码器时基 代码如下示例 /*时基单元初始化*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义结构体变量TIM_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1; //时钟分频选择不分频此参数用于配置滤波器时钟不影响时基单元功能TIM_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up; //计数器模式选择向上计数TIM_TimeBaseInitStructure.TIM_Period 65536 - 1; //计数周期即ARR的值TIM_TimeBaseInitStructure.TIM_Prescaler 1 - 1; //预分频器即PSC的值TIM_TimeBaseInitStructure.TIM_RepetitionCounter 0; //重复计数器高级定时器才会用到TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStructure); //将结构体变量交给TIM_TimeBaseInit配置TIM3的时基单元2.4 初始化编码器输入 代码如下示例 /*输入捕获初始化*/TIM_ICInitTypeDef TIM_ICInitStructure; //定义结构体变量TIM_ICStructInit(TIM_ICInitStructure); //结构体初始化若结构体没有完整赋值//则最好执行此函数给结构体所有成员都赋一个默认值//避免结构体初值不确定的问题TIM_ICInitStructure.TIM_Channel TIM_Channel_1; //选择配置定时器通道1TIM_ICInitStructure.TIM_ICFilter 0; //输入滤波器参数可以过滤信号抖动TIM_ICInit(TIM3, TIM_ICInitStructure); //将结构体变量交给TIM_ICInit配置TIM3的输入捕获通道TIM_ICInitStructure.TIM_Channel TIM_Channel_2; //选择配置定时器通道2TIM_ICInitStructure.TIM_ICFilter 0; //输入滤波器参数可以过滤信号抖动TIM_ICInit(TIM3, TIM_ICInitStructure); //将结构体变量交给TIM_ICInit配置TIM3的输入捕获通道2.5 配置编码器接口 /*编码器接口配置*/TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//配置编码器模式以及两个输入通道是否反相//注意此时参数的Rising和Falling已经不代表上升沿和下降沿了而是代表是否反相//此函数必须在输入捕获初始化之后进行否则输入捕获的配置会覆盖此函数的部分配置2.6 开启定时器 /*TIM使能*/TIM_Cmd(TIM3, ENABLE); //使能TIM3定时器开始运行2.7获取编码器数据 /*** 函 数获取编码器的增量值* 参 数无* 返 回 值自上此调用此函数后编码器的增量值*/ int16_t Encoder_Get(void) {/*使用Temp变量作为中继目的是返回CNT后将其清零*/int16_t Temp;Temp TIM_GetCounter(TIM3);TIM_SetCounter(TIM3, 0);return Temp; }三、参考程序 #include stm32f10x.h #include stdio.h //全局GPIO_InitTypeDef GPIO_InitStruct;int x;/*** 函 数编码器初始化* 参 数无* 返 回 值无*/ void Encoder_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //开启TIM3的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure); //将PA6和PA7引脚初始化为上拉输入/*时基单元初始化*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义结构体变量TIM_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1; //时钟分频选择不分频此参数用于配置滤波器时钟不影响时基单元功能TIM_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up; //计数器模式选择向上计数TIM_TimeBaseInitStructure.TIM_Period 65536 - 1; //计数周期即ARR的值TIM_TimeBaseInitStructure.TIM_Prescaler 1 - 1; //预分频器即PSC的值TIM_TimeBaseInitStructure.TIM_RepetitionCounter 0; //重复计数器高级定时器才会用到TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStructure); //将结构体变量交给TIM_TimeBaseInit配置TIM3的时基单元/*输入捕获初始化*/TIM_ICInitTypeDef TIM_ICInitStructure; //定义结构体变量TIM_ICStructInit(TIM_ICInitStructure); //结构体初始化若结构体没有完整赋值//则最好执行此函数给结构体所有成员都赋一个默认值//避免结构体初值不确定的问题TIM_ICInitStructure.TIM_Channel TIM_Channel_1; //选择配置定时器通道1TIM_ICInitStructure.TIM_ICFilter 0; //输入滤波器参数可以过滤信号抖动TIM_ICInit(TIM3, TIM_ICInitStructure); //将结构体变量交给TIM_ICInit配置TIM3的输入捕获通道TIM_ICInitStructure.TIM_Channel TIM_Channel_2; //选择配置定时器通道2TIM_ICInitStructure.TIM_ICFilter 0; //输入滤波器参数可以过滤信号抖动TIM_ICInit(TIM3, TIM_ICInitStructure); //将结构体变量交给TIM_ICInit配置TIM3的输入捕获通道/*编码器接口配置*/TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//配置编码器模式以及两个输入通道是否反相//注意此时参数的Rising和Falling已经不代表上升沿和下降沿了而是代表是否反相//此函数必须在输入捕获初始化之后进行否则输入捕获的配置会覆盖此函数的部分配置/*TIM使能*/TIM_Cmd(TIM3, ENABLE); //使能TIM3定时器开始运行 }/*** 函 数获取编码器的增量值* 参 数无* 返 回 值自上此调用此函数后编码器的增量值*/ int16_t Encoder_Get(void) {/*使用Temp变量作为中继目的是返回CNT后将其清零*/int16_t Temp;Temp TIM_GetCounter(TIM3);TIM_SetCounter(TIM3, 0);return Temp; }void usart1_init() {//PA9 TX PA10 RX USART1GPIO_InitTypeDef GPIO_InitStruct;USART_InitTypeDef USART_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);//1.开时钟GPIO_InitStruct.GPIO_PinGPIO_Pin_9;//发送GPIO_InitStruct.GPIO_ModeGPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStruct);GPIO_InitStruct.GPIO_PinGPIO_Pin_10;//接收GPIO_InitStruct.GPIO_ModeGPIO_Mode_IN_FLOATING;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStruct);USART_InitStruct.USART_BaudRate115200;USART_InitStruct.USART_HardwareFlowControlUSART_HardwareFlowControl_None;USART_InitStruct.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;USART_InitStruct.USART_ParityUSART_Parity_No;USART_InitStruct.USART_StopBitsUSART_StopBits_1;USART_InitStruct.USART_WordLengthUSART_WordLength_8b;USART_Init(USART1, USART_InitStruct);//2.初始化串口 USART_Cmd(USART1, ENABLE);//3.是能串口USART_SendData(USART1, 4);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)!1);USART_SendData(USART1, 1);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)!1);USART_SendData(USART1, 0X41);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)!1);USART_SendData(USART1, 41);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)!1);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE );// 4.接受完成中断NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 5.配置中断分组NVIC_InitStruct.NVIC_IRQChannelUSART1_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmdENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority0;NVIC_InitStruct.NVIC_IRQChannelSubPriority0; NVIC_Init(NVIC_InitStruct);//配置中断优先级}int fputc(int ch,FILE *f) {USART_SendData(USART1, (u8)ch);while(!USART_GetFlagStatus(USART1, USART_FLAG_TXE));return ch; }void delay(u16 ms) {u16 i,j;for(i0;ims;i)for(j0;j1000;j); }int main() {//局部 // 库函数开启GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStruct.GPIO_Pin GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(GPIOA, GPIO_InitStruct); //xGPIO_InitStruct.GPIO_Pin GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode GPIO_Mode_IPU; GPIO_Init(GPIOB, GPIO_InitStruct); //x usart1_init();Encoder_Init();u16 Speed0;GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_ResetBits(GPIOA, GPIO_Pin_1);while(1){GPIO_SetBits(GPIOA, GPIO_Pin_0);//GPIO_ResetBits(GPIOA, GPIO_Pin_0);u8 k0;for(k0;k20;k){GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_ResetBits(GPIOA, GPIO_Pin_0);delay(100);GPIO_ResetBits(GPIOA, GPIO_Pin_1);GPIO_ResetBits(GPIOA, GPIO_Pin_1);delay(100);GPIO_SetBits(GPIOA,GPIO_Pin_0); GPIO_SetBits(GPIOA,GPIO_Pin_0);delay(100);GPIO_SetBits(GPIOA,GPIO_Pin_1); GPIO_SetBits(GPIOA,GPIO_Pin_1); delay(100);}Speed Encoder_Get(); //每隔固定时间段读取一次编码器计数增量值即为速度值printf(测到的脉冲是%d \r\n,Speed);} } 四、测试结果 4.1测试方法 将正交编码编码的信号输入STM32 PA6 PA7引脚 因为没有编码器所以用PA0 和PA1模拟输出正交编码的PWM波形 如果有编码器器可以直接接入 PA6 PA7 4.2串口输出结果 结果分析 这里对输入的波形滤波 PA0 PA1 高低电平输出 循环20次 一次PA0循环输出1次上升沿1次下降沿 一次PA1循环输出1次上升沿1次下降沿 20*111180 所以计数器的次数是0 接线 总结 学习使人快乐 音乐使人愉悦 日积月累使人充实和自信
http://www.w-s-a.com/news/621210/

相关文章:

  • 同创企业网站建设拖拽建设网站源码
  • wordpress调用网站标题网站页面排版
  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板
  • 湖南省建设人力资源网站wordpress主机pfthost
  • 淮安软件园哪家做网站各网站特点
  • 网站长尾关键词排名软件重庆荣昌网站建设
  • 建个商城网站多少钱茂名专业网站建设
  • 开通公司网站免费的网站app下载
  • 跨境电商网站模板wordpress壁纸
  • 国内做网站网站代理电子商务网站建设与维护概述
  • 如何做地方网站推广沈阳网势科技有限公司
  • 哈尔滨网站优化技术涵江网站建设
  • 做网站搞笑口号wordpress全屏动画
  • 怎么可以建网站小程序代理项目
  • 怎样做软件网站哪个网站用帝国cms做的
  • 网站开发编程的工作方法wordpress dux-plus
  • 廊坊电子商务网站建设公司网站进不去qq空间
  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计