【STM32】STM32学习笔记-编码器接口测速(20)

00. 目录

文章目录

    • 00. 目录
    • 01. 预留
    • 02. 编码器测速接线图
    • 03. 编码器测速程序示例
    • 04. 程序下载
    • 05. 附录

01. 预留

02. 编码器测速接线图

在这里插入图片描述

03. 编码器测速程序示例

Encoder.h

#ifndef __ENCODER_H
#define __ENCODER_H

void Encoder_Init(void);
int16_t Encoder_Get(void);

#endif

Encoder.c

#include "stm32f10x.h"                  // Device header

void Encoder_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	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);
		
	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_ICInitTypeDef TIM_ICInitStructure;
	TIM_ICStructInit(&TIM_ICInitStructure);
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
	TIM_ICInitStructure.TIM_ICFilter = 0xF;
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
	TIM_ICInitStructure.TIM_ICFilter = 0xF;
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	
	TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
	
	TIM_Cmd(TIM3, ENABLE);
}

int16_t Encoder_Get(void)
{
	int16_t Temp;
	Temp = TIM_GetCounter(TIM3);
	TIM_SetCounter(TIM3, 0);
	return Temp;
}

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
#include "Encoder.h"

int16_t Speed;

int main(void)
{
	OLED_Init();
	Timer_Init();
	Encoder_Init();
	
	OLED_ShowString(1, 1, "Speed:");
	
	while (1)
	{
		OLED_ShowSignedNum(1, 7, Speed, 5);
	}
}

void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		Speed = Encoder_Get();
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}
}

04. 程序下载

14-编码器接口测速.rar

05. 附录

参考: 【STM32】江科大STM32学习笔记汇总

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/292742.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

someip中通过event方式通信,为什么实际使用时使用的是eventGroup?

someip是一种面向服务的可伸缩的协议,用于控制消息的汽车中间件的解决方案。someip提供了三种接口类型:Method,Event和Field,分别对应不同的通信机制和场景。 Event是一种主动发送的接口,用于通知客户端服务端的状态变化或者事件发生。Event可以按照一定的规则或者周期发…

IDEA中自动导包及快捷键

导包设置及快捷键 设置:Setting->Editor->General->Auto import快捷键 设置:Setting->Editor->General->Auto import java区域有两个关键选项 Add unambiguous imports on the fly 快速添加明确的导包 IDEA将在我们书写代码的时候…

JS中模块的导入导出

背景 学习js过程中,发现导入导出有的是使用的export 导出,import导入,有的是使用exports或module.exports导出,使用require导入,不清楚使用场景和规则,比较混乱。 经过了解发现,NodeJS 中&…

莫比乌斯函数

积性函数定义 若gcd(p,q)1,有f(p*q)f(p)*f(q),则f(x)是积性函数 其中规定f(1)1,对于积性函数有:所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …

QT_01 安装、创建项目

QT - 安装、创建项目 1. 概述 1.1 什么是QT Qt 是一个跨平台的 C图形用户界面应用程序框架。 它为应用程序开发者提供建立艺术级图形界面所需的所有功能。 它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 1.2 发展史 1991 年 Qt 最早由奇…

C# A* 算法 和 Dijkstra 算法 结合使用

前一篇:路径搜索算法 A* 算法 和 Dijkstra 算法-CSDN博客文章浏览阅读330次,点赞9次,收藏5次。Dijkstra算法使用优先队列来管理待处理的节点,通过不断选择最短距离的节点进行扩展,更新相邻节点的距离值。Dijkstra算法使…

Hadoop入门学习笔记——八、数据分析综合案例

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 八、数据分析综合案例8.1. 需求分析8.1.1. 背景介绍8.1.2…

Java业务功能并发问题处理

业务场景: 笔者负责的功能需要调用其他系统的进行审批,而接口的调用过程耗时有点长(可能长达10秒),一个订单能被多个人提交审批,当订单已提交后会更改为审批中,不能再次审批(下游系…

js逆向第11例:猿人学第4题雪碧图、样式干扰

任务4:采集这5页的全部数字,计算加和并提交结果 打开控制台查看请求地址https://match.yuanrenxue.cn/api/match/4,返回的是一段html网页代码 复制出来格式化后,查看具体内容如下: <td><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAA…

mysql与其他数据库有何区别?

随着信息技术的不断发展&#xff0c;数据库系统在各行各业中得到了广泛的应用。其中&#xff0c;MySQL作为一种流行的关系型数据库管理系统&#xff0c;与其他数据库系统存在一些明显的区别。本文将就MySQL与其他数据库的区别进行深入探讨。 1、更低的成本 MySQL是一个开源的关…

小兔鲜儿 uniapp - 项目打包

目录 微信小程序端​ 核心步骤​ 步骤图示​ 条件编译​ 条件编译语法​ 打包为 H5 端​ 核心步骤​ 路由基础路径​ 打包为 APP 端​ 微信小程序端​ 把当前 uni-app 项目打包成微信小程序端&#xff0c;并发布上线。 核心步骤​ 运行打包命令 pnpm build:mp-weix…

Mybatis系列课程-一对一

目标 学会使用 assocation的select 与column 属性 select:设置分步查询的唯一标识 column:将查询出的某个字段作为分步查询的下一个查询的sql条件 步骤 第一步:修改Student.java 增加 private Grade grade; // 如果之前已经增加过, 跳过这步 第二步:修改StudentMapper.java…

YOLOv8改进 | 2023Neck篇 | 利用Gold-YOLO改进YOLOv8对小目标检测

一、本文介绍 本文给大家带来的改进机制是Gold-YOLO利用其Neck改进v8的Neck,GoLd-YOLO引入了一种新的机制——信息聚集-分发(Gather-and-Distribute, GD)。这个机制通过全局融合不同层次的特征并将融合后的全局信息注入到各个层级中,从而实现更高效的信息交互和融合。这种…

【PX4-AutoPilot教程-TIPS】Ubuntu中安装指定版本的gcc-arm-none-eabi

Ubuntu中安装指定版本的gcc-arm-none-eabi 在 Ubuntu 中开发基于 ARM 架构的 STM32 芯片&#xff0c;需要安装交叉编译器 gcc-arm-none-eabi编译代码&#xff0c;那么什么是交叉编译器呢&#xff1f; Ubuntu 自带的 gcc 编译器是针对 X86 架构的&#xff01;而我们现在要编译…

Leetcode2962. 统计最大元素出现至少 K 次的子数组

Every day a Leetcode 题目来源&#xff1a;2962. 统计最大元素出现至少 K 次的子数组 解法1&#xff1a;滑动窗口 算法如下&#xff1a; 设 mx max⁡(nums)。右端点 right 从左到右遍历 nums。遍历到元素 xnums[right] 时&#xff0c;如果 xmx&#xff0c;就把计数器 co…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI &#xff08;一&#xff09;elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串&#xff0c;才会显示默认选中对应中文&#xff0c;如果是数字&#xff0c;则显示数字&#xff0c;修改为&#xff1a; handleOpenAddDialog() {this.dialogT…

JVS规则引擎和智能BI(自助式数据分析)1.3新增功能说明

规则引擎更新功能 新增: 1、数据源新增Excel数据源&#xff1b; Excel数据源功能允许用户将Excel文件作为数据源导入&#xff0c;并进行数据清洗、转换和处理&#xff0c;以实现数据的集成、可视化和深度分析&#xff0c;为决策提供强大支持&#xff0c;同时保持良好的交互性…

html+css 有关于less的使用和全面解释

目录 less 注释 运算 嵌套 变量 导入 导出 禁止导出 less Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力 注意&#xff1a;浏览器不识别 Less 代码&#xff0c;目前阶段&#xff0c;网页要引入对应的 CSS 文件 V…

ClickHouse数据库详解和应用实践

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 概述1.适用场景2.不适用场景 一、核心特性1.完备的DBMS功能2.列式存储与数据压缩 二、安装部署1.在线安装2.离线安装 三、jdbc访问总结 概述 ClickHouse 是一个用于…

Linux 系统磁盘空间扩容

根据提示可以看到此系统的磁盘是 50G 的&#xff0c;但是实际适用有28G左右可以扩容20G 1、磁盘分区 m 查看帮助信息 n&#xff08;表示增加分区&#xff09; p&#xff08;创建主分区&#xff09; partition number 输入3&#xff08;因为上面已经有两个分区 sda1 和 sda2&…