初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

这篇具有很好参考价值的文章主要介绍了初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32CubeMx配置定时器的编码器模式

上次文章写了编码器是如何工作的,今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。

编程思路:

A相:TIM3_CH1

B相:TIM3_CH2

SWITCH:PB5(外部中断的方式)

实现效果:

编码器顺时针旋转编码器计数值 +1

编码器逆时针旋转编码器计数值 -1

按下SWITCH编码器计数值值清 0

话不多说,上教程!

1.配置时钟

  • 选择外部高速时钟源HSE

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

2.配置SWITCH管脚为外部中断模式(默认上拉)

  • 选择中断模式触发下降沿有效

  • 默认是上拉输入

  • 添加用户标签为SWITCH

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

使能NVIC配置

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

3.配置定时器管脚为编码器模式

  • 选择编码器模式
  • 分频值设置为2-1
  • 计数值设置为1
  • 自动重装在值1
  • 自动重载使能
  • 通道1,2都计数
  • 都是上升沿有效

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

4.配置时钟到72MHz

  • 手动输入72MHz自动匹配

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

5.配置工程属性

  • 填写工程名字
  • 选择工程路径
  • 选择工程平台(KEIL MDK)
    初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

6.配置工程代码属性

  • 拷贝必要的库文件
  • 单独形成.c跟.h文件

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

7.生产工程并添加修改代码

  • 直接打开工程
  • 修改必要代码

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

7.1修改定时器代码

  • 添加一个自定义结构体

/* USER CODE BEGIN Private defines */

typedef struct
{
	int Encoder_Val;
	int Encoder_Dir;
}EC11_t;

extern EC11_t EC11;
/* USER CODE END Private defines */

编写一个中断回调函数

编写回调函数逻辑代码

/* USER CODE BEGIN 0 */
EC11_t                   EC11;
/* USER CODE END 0 */

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 uint8_t dir = 0;
	 if(htim == &htim3)
	 {
		 dir =  __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
		 if(dir==1)
		 {
			 EC11.Encoder_Val++;
			 EC11.Encoder_Dir =  1;
		 }
		 if(dir==0)
		 {
			 EC11.Encoder_Val--;
			 EC11.Encoder_Dir = -1;
		 }
	 }
}
/* USER CODE END 1 */

7.2修改外部中断代码

添加一个中断回调函数

/* USER CODE BEGIN 1 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	EC11.Encoder_Val = 0;
}
/* USER CODE END 1 */

7.3修改初始化代码

  /* USER CODE BEGIN TIM3_Init 2 */
	__HAL_TIM_CLEAR_IT(&htim3,TIM_IT_UPDATE);
	HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
	__HAL_TIM_ENABLE_IT(&htim3,TIM_IT_UPDATE);
  /* USER CODE END TIM3_Init 2 */

8.下载调试代码

  • 现象1顺时针旋转编码器值加1

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

  • 现象2顺时针旋转编码器值减1

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

  • 按键按下编码器值清零

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式,STM32,stm32,单片机,嵌入式硬件,编码器,CubeMx

9.总结

至此编码器已经全部写完了。STM32CubeMx的使用比较方便,注意一点就是如果修改代码尽量写到英文的注释中去,这样即使再重新修改CubeMx配置重新生成代码也不会改变原来的程序,否则原来的代码就没了,别问我咋知道的血泪的教训啊!!!文章来源地址https://www.toymoban.com/news/detail-658506.html

到了这里,关于初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 HAL库 STM32CubeMx -- 外部中断

    中断,是指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序

    2024年02月08日
    浏览(19)
  • STM32 HAL库 STM32CubeMX -- ADC

    ADC(Analog-to-Digital Converter)指模/数转换器或者模拟/数字转换器。 是指将连续变量的模拟信号转换为离散的数字信号的器件。 也就是将 模拟信号 转化为 数字信号 。 STM32f103 系列有3 个ADC,精度为12 位,每个ADC 最多有16 个外部通道和2个内部信号源。其中ADC1 和ADC2 都有16 个外部

    2024年02月15日
    浏览(18)
  • 【STM32】入门(十):STM32CubeMx下载、安装、使用

    【STM32】STM32单片机总目录 STM32CubeMx依赖 java 环境,需要先下载安装java SE,下载地址: https://www.java.com/zh-CN/download/ STM32CubeMx下载地址:https://www.st.com/zh/development-tools/stm32cubemx.html 下载前,需要输入 邮箱 ,在邮箱里点击下载连接,即可下载 下载的软件: 双击exe,点击安装,等

    2024年01月24日
    浏览(20)
  • STM32硬件IIC实验(STM32CubeMx配置)

    IIC:Inter Integrated Circuit,集成电路总线,是一种 同步 串行 半双工 通信总线。 在这里贴一下硬件IIC和软件IIC的区别: 从图中可以看出两者的区别,硬件IIC比软件IIC的用法会比较复杂,但是这里如果不关注底层的实现去使用STM32CubeMx进行IIC的配置,再使用特定函数就能够实现

    2024年02月12日
    浏览(20)
  • STM32CubeMX安装

    官网地址 :STM32CubeMX - STM32Cube初始化代码生成器 - 意法半导体STMicroelectronics 官网下载需要注册账号 网盘链接(6.8): 链接:https://pan.baidu.com/s/1kiSD3hMxjB7ds3zk093eug?pwd=yvpq 提取码:yvpq 这里STM32CubeMX使用需要JRE环境,不过现在JRE已经集成到JDK中了,不需要单独安装,所以这里直接

    2024年02月09日
    浏览(19)
  • stm32 舵机 cubemx

    stm32对舵机进行控制,很简单直接一个pwm就可以实现 pwm的周期是50HZ占空比分别对应 一个0.5ms的高电平对应于0度 一个1.5ms的高电平对应于90度 一个2.5ms的高电平对应于180度 因此,您可以通过改变PWM信号的占空比来改变舵机的角度。占空比是PWM信号的高电平时间与PWM信号的总周

    2024年02月15日
    浏览(16)
  • STM32CubeMX学习笔记16--- STM32内部FLASH

    1. 内部FLASH简介         之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLASH实现数据读写操作。 不同型号的STM32,其FLASH容量也有所不同,最小的只有16K字节,最大的则达到了1024K字节。此处我们使用的是ST

    2024年04月09日
    浏览(24)
  • STM32CubeMX一键升级

    使用STM32CubeMX过程中会遇到检查版本更新可用却无法打勾更新的情况 解决方案是: 1.桌面右键STM32CubeMX程序 2.选择兼容性选项卡 3.勾上以管理员身份运行 问题解决

    2024年02月11日
    浏览(15)
  • STM32 cubemx CAN

    接收用到的结构体如下: CAN概念:         全称Controller Area Network,是一种半双工,异步通讯。 物理层:         闭环:允许总线最长40m,最高速1Mbps,规定总线两端各有一个120Ω电阻,闭环        开环:最大传输距离1Km,最高速125Kbps,规定每根线串联一个2.2kΩ的电阻,

    2024年01月18日
    浏览(16)
  • STM32CubeMX串口通讯

    根据通讯使用的电平标准不同, 串口通讯可分为 TTL 标准及 RS-232 标准 。而STM32的串口是TTL电平标准的。如果需要使用到RS-232则需要一个电平转换芯片。 讲到串口,我们还需要具备这些基础概念。 单工通讯 (1)单工通讯特点很简单,就是只有一个发送端,一个接收端。 从一

    2024年02月02日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包