【STM32Cube HAL】定时器中断(四)

2023-05-16

  实验内容:使用基本定时器,实现LED灯以1S间隔进行亮灭切换。

一、原理图

 二、 CubeMX配置

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。

 Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。

  

Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)

 

Step4.配置时基以及定时器中断。

 

到这里关于定时器参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。
三、添加功能代码
首先在主函数中开启定时器,并使能定时器中断(更新中断),并在while(1)循环中添加一个判断语句,在定时器中断1000次以后,进行LED灯电平的翻转,并将中断计数清零。
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM6_Init();
	
	__HAL_TIM_CLEAR_IT(&htim6,TIM_IT_UPDATE);//清除中断标志位,防止一使能定时器就进入中断
	HAL_TIM_Base_Start_IT(&htim6);//开启定时器,并使能定时器中断(更新中断)
  while (1)
  {
    
			if(cnt==1000)
			{
				HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
				cnt=0;
			}
  }
}

 回调函数,主要是用来计录定时器中断的次数,与while(1)循环中的判断语句相呼应。从而实现定时器计时1S,LED灯状态切换一次的效果。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	cnt++;//记录定时器中断的次数
}
定时器注意要点在于时基的配置。 这里我们先了解几个参数和概念。
定时器的定时时间等于计数器的中断周期乘以中断的次数。
定时器的时钟:TIMxCLK
计数器时钟:CK_CNT
预分频数:PSC
定时器周期: ARR( 注意:这里的周期指的不是时间而是计数个数!!!计数器能计数的最大数值,有时候这里很容易混淆
计数器的时钟频率等于定时器的时钟频率除以预分频数:
TIMxCLK/(PSC+1)   
计数器计一个数的时间等于计数器时钟频率的倒数:
(PSC+1)/TIMxCLK
产生一次中断的时间(中断周期)则等于计一个数的时间乘以计数的个数(定时器周期 ):                                                    (ARR+1)*(PSC+1)/TIMxCLK
如果在中断服务程序里面设置一个变量 time ,用来记录中断的次数,那么就可以计算出我们需要的定时时间等于:
                                      time*(ARR+1)*(PSC+1)/TIMxCLK

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32Cube HAL】定时器中断(四) 的相关文章

  • PX4源码解读之fw_pos_control_l1

    固定翼的位置控制是一个很重要问题 它不同于旋翼的控制 需要对速度和高度进行解耦控制 并且其不能像旋翼那样进行悬停 其转弯的时候有一个转弯半径 本博客不会对源码进行详细的解读 主要是分享一些自己读源码时的资料 自己读的过程中也有注释 想要的同
  • 四元数表示旋转的理解

    哈密尔顿 为了纪念四元数的发明者哈密尔顿 爱尔兰于1943年11月15日发行了下面这张邮票 哈密尔顿简直是个天才 哈密尔顿从小到进入大学之前没有进过学校读书 xff0c 他的教育是靠叔父传授以及自学 他找到了法国数学家克莱罗 xff08 C
  • mc_att_control源码解析

    目录 源码分析内环控制外环控制 之前写了博客分析了一下旋翼姿态控制的基础知识 mc att control基础知识 这次就对照代码将整个旋翼姿态控制过程呈现一遍 先看一下整个程序的框图 从图中可以看到 实际上整个控制分成内外两个环进行控制
  • PX4下载指定版本代码和刷固件的三种方式

    由于之前下载的是1 7版本的代码 现在v5版本的px4需要最新的代码固件 因此这里记录一下 查看自己代码版本 查看自己仓库代码版本的命令如下 git describe always tags 输出 v1 7 0 rc3 9 g0e1c7eb
  • Python怎么调用matlab的

    文章目录 环境的安装安装合适的python环境安装用于 Python 的 MATLAB 引擎 API 环境的安装 安装合适的python环境 研究这个也是在知乎上突然看到的 xff0c 以前python写的多 xff0c 现在由于工作需要
  • insert语句中sequence的使用方法

    我们常常在表中需要插入一些自动增长的值 一方面 我们可以手动添加这些值 xff0c 另一方面 oracle提供的sequence可以帮助我们实现插入的值自动增长 而不需要我们手动的提供值 我们需要做的就是设置好sequence的初值和增长值
  • Ubuntu 安装 vnc server

    查看Ubuntu系统版本 xff1a sudo lsb release a 安装Xfce桌面环境 xff1a sudo apt install xfce4 xfce4 goodies 配置gnome桌面环境 xff0c 参考 xff1a h
  • 嵌入式Linux(4):应用层和内核层数据传输

    文章目录 简介1 如果在应用层使用系统IO对设备节点进行打开 xff0c 关闭 xff0c 读写等操作会发生什么呢 xff1f 写个例子2 假如驱动层的file operations里面没有实现read之类的操作函数 xff0c 会发生什么
  • 嵌入式Linux(5):物理地址到虚拟地址映射

    文章目录 理论知识1 使能了MMU以后有什么好处呢 xff1f 2 MMU非常复杂 xff0c 那么我们如何完成物理地址到虚拟地址的转换呢 xff1f 3 如何查看哪些物理地址被映射过了呢 xff1f 实例 RK3568 理论知识 在Lin
  • 嵌入式Linux(6):驱动模块传参

    文章目录 1 什么是驱动传参 xff1f 2 驱动传参有什么作用 xff1f 3 怎么给我们的驱动传参数 xff1f 传递普通参数传递数组 1 什么是驱动传参 xff1f 驱动传参就是在安装驱动模块 xff08 ko文件 xff09 的时候
  • 嵌入式Linux(7):字符设备驱动--申请设备号

    文章目录 1 字符设备和杂项设备的区别2 注册字符类设备号的两个办法第一种 xff1a 静态分配一个设备号第二种 xff1a 动态分配注销设备号 写代码不带参数测试 xff08 动态分配 xff09 xff1a 带参数测试 xff08 静态
  • 嵌入式Linux(8):字符设备驱动--注册字符类设备

    文章目录 前言上代码 前言 杂项设备 注册杂项设备 xff1a span class token function misc register span span class token punctuation span span clas
  • 嵌入式Linux(9):字符设备驱动--自动创建设备节点

    文章目录 前言1 怎么自动创建一个设备节点 xff1f 2 什么是mdev3 什么是udev 4 怎么自动创建设备节点 xff1f 5 创建和删除类函数 自动生成类代码 6 创建设备函数 自动生成节点代码 前言 在上一节中 xff0c 使用
  • 嵌入式Linux(10):杂项设备和字符设备驱动总结

    文章目录 杂项设备驱动框架图 xff1a 字符设备驱动框架图 xff1a 相对来说 xff0c 如果是操作几个GPIO的操作 xff0c 其实使用简单的杂项设备驱动就可以了 xff0c 字符驱动相对会复杂一点
  • 嵌入式Linux:FrameBuffer 和 DRM/KMS(一)

    文章目录 前言 Linux 的两种显示方案FrameBufferDRM1 GEM2 KMS 参考 xff1a RK3399 探索之旅 Display 子系统 基础概念 参考 xff1a DRM架构介绍 xff08 一 xff09 前言 Li
  • 【RP-RV1126】Ubuntu上配置Buildroot Qt 开发板远程开发调试环境(SSH)

    文章目录 一 前提二 基础设置建设Buildroot编译Qt5配置SSHBuildroot文件系统添加账号密码开发板联网Buildroot文件系统构建时打开rsync功能 三 QtCreator配置3 1 配置Qt交叉编译套件 Kits 配
  • oracle create view语法

    视图实际上是一个或多个表上的预定义查询 xff0c 这些表称为基表 视图并不存储数据 xff0c 只是在查询视图时才访问基表 视图的优点 xff1a 限制用户只能通过视图检索数据 xff0c 对用户屏蔽基表 可以将复杂的查询编写为视图 xf
  • springsecurity oauth2实现前后端分离项目的SSO技术点总结

    参考 xff1a https www jianshu com p b549220e7b34 ivk sa 61 1024320u 一 基于cookie 43 session的SSO基本实现 1 认证中心的授权服务器配置 配置类继承Autho
  • 【Buildroot】基础知识:目录、根文件系统目录覆盖、编译性能分析(编译时间、目标尺寸、包依赖图)

    文章目录 一 Buildroot目录介绍二 Finalizing target2 1 fs overlay2 2 post build2 3 post image 三 编译性能3 1 编译耗时3 2 编译依赖关系3 3 编译结果尺寸分析3
  • 【RV1126】移植kaldi实时语音识别

    文章目录 算法一 环境1 1 硬件环境 RV1126开发板1 2 交叉编译器1 3 需要Cmake版本大于3 1以上 二 交叉编译sherpa2 1 下载sherpa2 2 编译sherpa2 3 运行测试 三 下载模型四 语音测试4 1

随机推荐