2.[STM32]高级定时器(TIM1&TIM8)

该博客详细介绍了如何使用STM32F103的高级定时器TIM1来控制蜂鸣器的频率。通过设置预分频器和自动重装载计数周期值,实现了对脉宽和波形周期的精确调节。实验中,利用TIM1的计数模式,结合中断处理,实现了蜂鸣器的频率控制,从而改变蜂鸣器的鸣叫声音。通过逻辑分析仪验证,脉宽设置准确,达到预期的5ms。

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

STM32F103有两个高级定时器,分别是TIM1TIM8;高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。
适用场合:
测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等);
使用方法
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
接下来以TIM1为例子,结合蜂鸣器来说明如何使用高级定时器,本次主要使用它的计数模式,实现精确的计数功能。

蜂鸣器原理图
在这里插入图片描述
解析:
U8A为蜂鸣器正极连接3.3V电压,负极与PNP三极管相连,当三极管基极为低电平时导通,蜂鸣器鸣叫;故给Buzzer引脚不同时间的脉宽,就可以实现蜂鸣器鸣叫的频率(Buzzer与单片机的PB9引脚相连)
本次实验使用的是有源蜂鸣器,它内部带震荡体,通电就会鸣叫。

TIM1定时器程序的编写

1.创建TIM函数

void TIM1_UserConfig(u16 Period,u16 Prescaler)
//第一个形参用来设置自动重载计数周期值
//第二个形参是用来设置分频系数
//之后计算脉宽会用到

2.定义TIM结构体和中断结构体

TIM_TimeBaseInitTypeDef TIM_InitStructure;
NVIC_InitTypeDef  NVIC_InitStructure;

3.选择TIM1时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

4.结构体参数配置
在库文件中,我们可以看到TIM1结构体的定义,包括两个u16类型的重装载值预分频值时钟分割计数模式u8类型的重复计数次数

	TIM_InitStructure.TIM_Period = Period;//重装载值
	TIM_InitStructure.TIM_Prescaler = Prescaler;//分频系数
	TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//不分割
	TIM_InitStructure
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依点_DW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值