使用CubeMX配置基本定时器TIM6(带计算方法 基于Cortex M4内核)

配置基本定时器TIM6的相关系数

配置时只需要关注分频值和预装载值即可。

分频值由TIM6的最大时钟值确定。由于TIM6是挂在APB1上的, 其时钟最大为1/2AHB时钟(即1/2 * 90MHz=45MHz),经过TIM6自带的倍频器后值为45MHz*2=90MHz

预装载值由计数器寄存器确定,通俗讲,就是每次溢出值计一个数, 计多少个数后,将标志位置一。

例如, 如果需要定时1秒, 那么, 只需将时钟源周期定为100us(即100us溢出一次,并计数一次), 然后计数器记10000次后,即可得到1S时间的标志位。(100us*10000=1000ms = 1s)

分频值计算方法:

由于 计数器频率 = TIM6最大频率/预分频器值

例如 需要其输出100us周期的时钟, 那么计数器频率 等于该周期的倒数 = 10000Hz,

TIM6最大频率为90Mhz(90,000,000Hz) , 那么就推出预分频值 = 90Mhz/10,000Hz = 9,000

(技巧:将时钟源设定为100us, 那么分频值就是恒定的9000, 需要计时1ms,就是10个100us, 将预装载值设定为10即可。10微秒,就是100)

将计算出的分频值和预装载值输入CubeMX即可, 然后生成代码。

生成的HAL库代码属于傻瓜编程。只需要在USER CODE BEGIN和END直接填入自己的代码即可, 完全不需要关注底层。

首先在主函数中找到 初始化的部分, 并在用户代码区填入 启动TIM6的HAL库函数。

调用HAL_TIM_Base_Start_IT(&htim6);

之后,在后面的函数区的用户代码区,填入触发标志位后的动作即可。

调用

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

自此, 每隔1秒, Flag 都会置一一次。

CUBE开发环境的HAL库果然够粗暴,,,,不用去管中断服务函数, 也不用去管固件库里的各种寄存器结构体配置,直接封装成两句代码,让STM32比51还简单。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值