历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2019年03月09日 | stm32定时器实现PWM输出控制无源蜂鸣器(HAL)

2019-03-09 来源:eefocus

(一)PWM概念和原理


脉冲宽度调制(PWM),是英文“Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。


PWM原理示意图

PWM原理示意图


上图是简单的PWM原理示意图。图中,我们假定定时器工作在向上计数PWM模式,且当CNT


(二)代码示例


环境:STM32F103C8  主频64MHz   TIM3


(1)GPIO初始化


 GPIO_InitStruct.Pin = GPIO_PIN_0;

 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  

 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

 GPIO_InitStruct.Pull = GPIO_PULLUP;

 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

(2)PWM相关函数


//---------------------------main.c---------------------------------------

// PWM 输出初始化

// arr:自动重装值  

static void TIM3_PWM_Init(UStoreData *pStoreData)

{

uint32_t liv_Var = Buzzer_Get_Buzzer_Volume(pStoreData->Buzzer_Volume);


if (liv_Var == BUZZER_VOLUME_ABNORMAL)

{

liv_Var = BUZZER_VOLUME_5;

}


TIM3_Handler.Instance = TIM3;

TIM3_Handler.Init.Prescaler = (HAL_RCC_GetPCLK1Freq() << 1) / 200000UL - 1; // 定时器分频:200K

TIM3_Handler.Init.CounterMode = TIM_COUNTERMODE_UP;

TIM3_Handler.Init.Period = BUZZER_PWM_MAX_FRE; // 自动重装载值

TIM3_Handler.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

HAL_TIM_PWM_Init(&TIM3_Handler);


TIM3_CH3Handler.OCMode = TIM_OCMODE_PWM1;

TIM3_CH3Handler.Pulse = liv_Var; // 设置比较值,此值用来确定占空比,占空比为50%时,蜂鸣器最响

TIM3_CH3Handler.OCPolarity = TIM_OCPOLARITY_LOW; // 输出比较极性为低

HAL_TIM_PWM_ConfigChannel(&TIM3_Handler, &TIM3_CH3Handler, TIM_CHANNEL_3);

HAL_TIM_PWM_Start(&TIM3_Handler, TIM_CHANNEL_3);

}

 

// 设置TIM通道3的占空比

// compare:比较值

void TIM_SetTIM3Compare3(uint32_t compare)

{

TIM3->CCR3 = compare;

}

 

//---------------------------stm32f1xx_hal_msp.c------------------------------------

 

// 定时器底层驱动,时钟使能,引脚配置

// 此函数会被HAL_TIM_PWM_Init()调用

// htim:定时器句柄

void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)

{

__HAL_RCC_TIM3_CLK_ENABLE();

}

 


推荐阅读

史海拾趣

HEIMANN公司的发展小趣事

在电子行业中,HEC Inc(以下简称HEC)作为一家知名的科技公司,其发展历程充满了挑战与机遇。以下是五个关于HEC发展起来的相关故事,每个故事均基于事实描述:

1. 技术创新引领市场突破

HEC自成立之初便致力于技术创新,在通信设备领域取得了显著成就。公司研发的高效路由器和交换机产品,凭借其卓越的性能和稳定性,迅速在市场中占据一席之地。特别是在5G技术兴起的背景下,HEC提前布局,成功推出了多款支持5G网络的通信设备,满足了市场对高速、低延迟网络连接的迫切需求。这些技术创新不仅巩固了HEC在通信行业的领先地位,也为其后续的市场拓展奠定了坚实基础。

2. 环保理念推动可持续发展

随着全球对环保问题的日益重视,HEC积极响应号召,将绿色技术融入产品研发和生产过程中。公司推出的多款电子产品,如智能手机和平板电脑,均采用了环保材料和节能设计,有效降低了产品生命周期中的碳排放。此外,HEC还建立了完善的电子废弃物回收体系,实现了资源的循环利用。这些环保举措不仅提升了公司的品牌形象,也为其赢得了更多消费者的青睐和市场的认可。

3. 跨界合作拓展业务领域

为了进一步扩大市场份额,HEC积极寻求跨界合作机会。公司与多家知名汽车制造商合作,将先进的通信技术应用于车载智能系统中,提升了驾驶体验和行车安全。同时,HEC还与智能家居厂商合作,推出了多款智能家电产品,实现了家居设备的互联互通和远程控制。这些跨界合作不仅丰富了HEC的产品线,也为其带来了新的增长点。

4. 全球化战略布局

为了应对日益激烈的国际竞争,HEC制定了全球化发展战略。公司在全球范围内设立了多个研发中心和销售网络,以更好地了解当地市场需求并快速响应。通过整合全球资源,HEC成功推出了多款符合不同国家和地区消费者需求的产品。此外,公司还积极参与国际展会和交流活动,提升了品牌知名度和国际影响力。

5. 应对挑战实现转型升级

面对行业内的激烈竞争和技术变革,HEC始终保持着敏锐的洞察力和强大的适应能力。公司不断调整产品结构,加大研发投入,推动产品向高端化、智能化方向发展。同时,HEC还积极拥抱数字化转型,通过大数据、云计算等先进技术优化生产流程和管理模式,提高了生产效率和产品质量。这些努力使HEC在挑战中实现了转型升级,保持了持续稳健的发展态势。

General Instrument Optoelectronics公司的发展小趣事
在控制电路中优化音频信号的生成和处理算法,使音色更加丰富和自然。
振华(CEC)公司的发展小趣事

随着企业规模的不断扩大和市场竞争的加剧,振华意识到单纯的自我发展已经难以满足企业的长远发展需求。因此,公司开始积极探索并购与资源整合的道路。通过并购具有技术优势和市场潜力的企业,振华不仅获得了更多的技术资源和市场份额,还实现了产业链的延伸和拓展。同时,公司还注重内部资源的整合和优化,提高资源的利用效率和管理水平。

Harvatek Corporation公司的发展小趣事

背景:在电子产品领域,品质是企业生存和发展的基石。Hantronix深知这一点,因此始终将品质保证放在首位。

发展:公司所有生产设施都通过了ISO 9001等国际质量管理体系认证,部分设施还通过了ISO/TS 16949等更高标准的认证。这些认证不仅证明了Hantronix在品质管理方面的卓越能力,也为其赢得了更多客户的信任和合作机会。

Analog公司的发展小趣事

Calex Mfg. Co., Inc.的创业之路并非一帆风顺。在创立初期,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司的创始人们凭借着对电子行业的热爱和对技术的深刻理解,坚持研发创新,不断推出符合市场需求的产品。他们通过精益求精的制造工艺和严格的质量控制,逐渐在市场中树立起了良好的口碑。

BENCENT公司的发展小趣事

BENCENT公司在成立之初,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。创始人带领团队夜以继日地研发,通过不断尝试和改进,终于成功开发出了一款具有竞争力的电子产品。这款产品凭借其高性能和创新性,在市场上获得了初步认可,为公司的后续发展奠定了基础。

问答坊 | AI 解惑

观点:LED常被忽略的一大优点

现在大多数人都已经知道,LED是一种节能减排的新光源。但是还有一个很大的优点却经常被忽略,那就是无污染和环保。我们知道汞是一种极其有毒的物质,然而几乎大多数目前采用的高效电光源中都含有汞,各种电光源的含汞量如下表所示: 而汞的沸点 ...…

查看全部问答>

虚拟仪器及其常用开发软件

虚拟仪器及其常用开发软件…

查看全部问答>

WINCE键盘驱动问题

我用流接口写了一个4*6的矩阵键盘驱动程序,现在需要将对应的按键与像PC机的键盘上的部分功能键对应起来,请问具体要如何对应呢? 具体我将每一个按键对应一个码,通过SendNotifyMessage()函数发送消息给应用,同时自己写了一个简单的WIN32应用程 ...…

查看全部问答>

怎么测试串口与GPRS MODEM是否连通,在程序中?

  在程序测试串口与GPRS MODEM是否连通,发“at”返回“ok”    这样写:      sp.WriteLine(\"at\\r\");      string str = sp.ReadLine();    运行后就没反应了, ...…

查看全部问答>

2011国赛中FPGA的问题

本帖最后由 paulhyde 于 2014-9-15 09:10 编辑 在今年的国赛中大家觉得纯用FPGA去代替单片机可以么?如果要准备FPGA去做应该做哪些准备?要准备什么模块儿?  …

查看全部问答>

求助

利用5438的ADC来进行AD转化,用A0通道,不知道该如何赋值格式?…

查看全部问答>

工作感触!!

首先感谢 孤独快乐 对我帮助! 还有那些给我好多思路和指点的朋友们,当然包括各大斑竹! 我是因为我的第一个项目点歌系统来到这里的,在朋友们的帮助下基本完成了,呵呵不是很完美。现在马上三月份了,龙抬头给大家拜个晚年,祝工作顺利财源滚 ...…

查看全部问答>

c语言的起源与概述

C语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan 和 D.M.Ritchit 合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是, ...…

查看全部问答>

quarus ii中的signal tap是否可以复制多个node

之前一直使用Xilinx的ISE进行开发,使用chipscope看波形时可以将探针信号进行复制、重新编组等操作,很方便。现在刚开始用Quartus ii 9.1,在使用signal tap上板调试时,发现没有办法复制node。 比如信号 a位宽为32位,第一拍,第二拍和第三拍的数 ...…

查看全部问答>

真有效值测量电路??怎么做呢?关于ADC的采样??

具体要求如下: 二、要求 1、基本要求 (1)真有效值电压测量:可测量频率范围在0Hz~10kHz频率范围的单频信号或合成信号的电压有效值,测量相对误差≤0.5%+最低位2个字。 (2)测量量程:分200mV、2V、20V三档,可用手动切换量程。 ...…

查看全部问答>