RM电控讲义【定时器篇】

文章详细介绍了STM32G431单片机中TIM6定时器的初始化、中断服务函数(TIM6_DAC_IRQHandler)、中断回调的区别,以及HAL库如何简化代码。讨论了PWM输出、定时器重映射、输入捕获和PWM输入模式在控制中的应用,包括CUBEMX中的相关名词解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HAL库最显著的特点是基于结构体从而利用句柄进而简化代码。

定时器初始化:

TIM6_DAC_IRQn是STM32G431单片机中定时器TIM6的中断请求名。TIM6是STM32G431的一个基本定时器,具有基本的定时功能。当累加的时钟脉冲数超过预定值时,TIM6能触发中断或触发DMA请求。此外,TIM6还被专门用于驱动数模转换器(DAC)。

在STM32G431中,TIM6的中断服务函数名为TIM6_DAC_IRQHandler(),而不是常见的TIM6_IRQHandler()。这是因为TIM6的中断不仅与TIM6自身的计时功能有关,还与DAC的转换完成有关。因此,当中断发生时,TIM6_DAC_IRQHandler()函数会被调用,以处理与TIM6和DAC相关的中断事件。

中断服务函数和中断回调函数的区别:

中断服务函数(ISR):

ISR是响应硬件中断而自动调用的函数。当特定的硬件事件(如定时器溢出、外部中断等)发生时,CPU会暂停当前正在执行的代码,跳转到与该硬件事件相关联的ISR执行。ISR通常是预先定义好的,并且在系统的初始化阶段配置到相应的中断向量表中。一旦中断发生,CPU会根据中断的类型查找中断向量表,然后跳转到相应的ISR执行。

中断回调函数(Interrupt Callback Function):

中断回调函数通常不是直接由硬件中断触发的,而是由某个库函数或框架在适当的时候调用的。它允许用户或开发者定义在某个特定事件发生时应该执行的代码。

中断回调函数通常用于异步事件处理,如网络请求完成、定时器到期、异步I/O操作完成等。当这些事件发生时,相应的回调函数会被调用。

中断回调函数通常不是由系统预先定义好的,而是由用户或开发者根据需要编写的,并通过某种机制(如注册回调函数)与事件处理框架关联起来。ISR是响应硬件中断而自动调用的函数,而中断回调函数是在特定事件发生时由框架或库调用的函数。

ISR通常是由系统预先定义并配置好的,而中断回调函数是由用户或开发者编写的。

ISR主要用于处理硬件事件,而中断回调函数主要用于处理异步事件。

无需手工调用,HAL库中已经对HAL_TIM_PeriodElapsedCallback做好了调用机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值