STM32L431RCT6的蜂鸣器的使用

在使用蜂鸣器之前,我们首先要了解蜂鸣器。蜂鸣器分 有源蜂鸣器和无源蜂鸣器,两者表面长相相同。

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极。

有源蜂鸣器:

一种带有内置驱动电路的蜂鸣器。它只需要输入一个交替电压信号,就可以发出一定频率的声音。源蜂鸣器通常带有两个引脚,一个用于连接电源,另一个用于连接控制信号。当控制信号为高电平时,蜂鸣器发出声音;当控制信号为低电平时,蜂鸣器停止发声。源蜂鸣器具有驱动电路,因此其工作电压范围比无源蜂鸣器宽,可以直接连接到数字电路或微控制器的IO口上使用。

其单片机IO端口简单接法如下:

R1起到限流保护作用,单片机IO端口输出低电平时有源蜂鸣器就响,反之不响。如果用三极管控制驱动有源蜂鸣器,常见接法如下,单片机IO端口输出低电平就响

 无源蜂鸣器:

    一种不带有内置驱动电路的蜂鸣器。它只是一个振动的电磁铁,需要外部驱动电路才能工作。无源蜂鸣器通常只有两个引脚,一个用于连接正极,另一个用于连接负极。在使用无源蜂鸣器时,需要外部电路提供一定频率的交替电压信号来驱动蜂鸣器发声。因此,无源蜂鸣器的驱动方式相对较为复杂,需要通过外部电路来实现。

总的来说,源蜂鸣器比无源蜂鸣器更容易使用,只需要提供简单的控制信号即可发出声音。而无源蜂鸣器需要外部电路的支持才能工作,使用起来相对较为复杂,但是其工作稳定性较高,可靠性也较强。

下面使用STM32L431开发板来对蜂鸣器进行开发。该开板上集成的是无源蜂鸣器,需要我们提供2KHz~5KHz的方波去驱动它。

   首先根据蜂鸣器的电路图,可知蜂鸣器的管脚为PA11,可作为TIM1_CH4使用,因此使能定时器TIM1的CH4t通道,并使其输出PWM即可,对相应管脚进行设置,如下图所示:

                   

蜂鸣器工作的频率在2KHz~5KHz,在这个频率范围内,频率越高,声音音色越清亮。因此需要设置其频率和占空比:(设定蜂鸣器的输出频率为2.5Khz,占空比为50%)

      根据芯片的数据手册以及设置的时钟树可知,TIM2内部时钟来源是ABP2= 80Mhz ,对其进行与预分频处理:

    计算器的时钟频率CK_CNT=fck_psc/(PSC+1)=80Mhz/(80-1+1)=1Mhz。因此所以预分频系数设置为80-1。

蜂鸣器想要工作在2.5Khz,则自动重装载值(Counter Period (AutoReload Register - 16 bits value ))ARR=1Mhz/2.5Khz=400.

占空比为50%,则Pulse=400/2=200。

为了防止蜂鸣器误发声音还需将GPIO设置为内部下拉,同时对管脚进行命名:

                                   

最后生成代码。

在tim.c相应位置添加如下代码:

/*Ring_Times为蜂鸣器响几次,Interval_time为蜂鸣器响的间隔时间*/
void Beep_Start(uint8_t Ring_Times,uint16_t Interval_time)
{
	while(Ring_Times--)
	{
		if(HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4) != HAL_OK)
		{
			Error_Handler();
		}
		HAL_Delay(Interval_time);
		if(HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_4) != HAL_OK)
		{
			Error_Handler();
		}
		HAL_Delay(Interval_time);
	}
}

补充说明:

HAL_TIM_PWM_Start() 函数

该函数的作用是启动PWM信号。

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

函数参数:htim 是需要启动的PWM信号的时钟

函数参数:Channel 是通道TIMx要启用的通道

此参数可以是以下值之一:

        TIM_CHANNEL_1:选择TIMx通道2

        TIM_CHANNEL_2:选择TIMx通道2

        TIM_CHANNEL_3:选择TIMx通道2

        TIM_CHANNEL_4:选择TIMx通道4

        TIM_CHANNEL_5:选择TIMx通道5

        TIM_CHANNEL_6:选择TIMx通道6

返回值:HAL状态

HAL_TIM_PWM_Stop()函数 

该函数的作用是停止PWM信号的生成。

HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)

函数参数:htim 是需要停止的PWM信号的时钟

函数参数:Channel 通道TIMx要禁用的通道

此参数可以是以下值之一:

        TIM_CHANNEL_1:选择TIMx通道2

        TIM_CHANNEL_2:选择TIMx通道2

        TIM_CHANNEL_3:选择TIMx通道2

        TIM_CHANNEL_4:选择TIMx通道4

        TIM_CHANNEL_5:选择TIMx通道5

        TIM_CHANNEL_6:选择TIMx通道6

返回值:HAL状态

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103RCT6是一款基于ARM Cortex-M3内核的32位微控制器,具有丰富的外设功能。蜂鸣器是一种能够发出嗡嗡声的小型电子设备,常用于提醒或警示的场合。 编写STM32F103RCT6的蜂鸣器程序需要以下几个步骤: 1. 配置GPIO引脚:确定蜂鸣器连接的GPIO引脚。可以使用STM32CubeMX软件进行引脚配置,或者手动在代码中配置GPIO寄存器。 2. 配置时钟:根据具体的系统时钟配置,确定GPIO引脚所使用的时钟频率和时钟源。一般使用RCC(Reset and Clock Control)模块进行时钟配置。 3. 配置GPIO模式:将蜂鸣器所连接的GPIO引脚设置为输出模式。 4. 发出声音:将GPIO引脚的输出电平设置为高电平,蜂鸣器就会发出声音;将GPIO引脚的输出电平设置为低电平,蜂鸣器则不会发出声音。可以使用GPIO寄存器的位操作函数设置输出电平。 5. 控制声音:可以通过控制GPIO引脚的输出电平的持续时间和间隔时间来控制蜂鸣器发声的频率和节奏。 注意事项: - 配置GPIO引脚时,需要注意引脚的复用功能和输入/输出模式。 - 配置时钟时,需要根据具体系统的时钟树结构合理设置时钟源和分频系数。 - 在控制声音的时候,需要使用适当的延时函数来控制电平的持续时间和间隔时间。 总之,编写STM32F103RCT6的蜂鸣器程序需要明确引脚配置、时钟配置和GPIO输出电平控制的相关操作,并根据具体需求设置声音的频率和节奏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值