历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2019年08月21日 | STM32PWM配置详解笔记

2019-08-21 来源:eefocus

关于STM32的PWM模式配置 ,核心代码如下,以原子的mini板STM32F103RCT6为例子


void TIM1_PWM_Init(u16 arr,u16 psc)//定时器1的PWM初始化

{

/*结构体变量定义*/

GPIO_InitTypeDef GPIO_Initstrue;

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitstrue;

TIM_OCInitTypeDef TIM_OCInitstrue;

/*-------------*/

/*开启TIM1时钟,配置对应管脚(PA8)为复用输出*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA,ENABLE);//使能TIM1和GPIOA时钟

GPIO_Initstrue.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽

GPIO_Initstrue.GPIO_Pin = GPIO_Pin_8;

GPIO_Initstrue.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_Initstrue);//初始化IO口为复用推挽

/*---------------------------------------*/

/*设置TIM1的ARR和PSC*/

TIM_TimeBaseInitstrue.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInitstrue.TIM_Period = arr;//设置自动重装载值,决定周期

TIM_TimeBaseInitstrue.TIM_Prescaler = psc;//设置预分频值,决定周期

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitstrue);//定时器初始化

/*设置TIM1_CH1的PWM模式,通道,使能TIM1的CH1输出*/

TIM_OCInitstrue.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能

TIM_OCInitstrue.TIM_OCMode = TIM_OCMode_PWM2;//PWM模式2:向上计数,CNT TIM_OCInitstrue.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性高

TIM_OC1Init(TIM1,&TIM_OCInitstrue);//通道1输出PWM

TIM_CtrlPWMOutputs(TIM1,ENABLE);//TIM1,8需要该函数MOE主输出使能

TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//CH1的CCR1预装载寄存器使能

TIM_ARRPreloadConfig(TIM1,ENABLE);//使能TIM1在ARR上的预装载寄存器

TIM_Cmd(TIM1,ENABLE);//使能TIM1定时器

}


步骤(相关寄存器与函数)


首先,应当使能对应的定时器与IO口时钟。因为PWM是从定时器的一个通道输出而来的。


第二步,通过ARR,PSC寄存器的值来控制PWM波的周期。如该代码,频率为72000K/(899+1)=80KHz


TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitstrue);//定时器初始化


第三步,设置TIM1-CH1的PWM模式,通道


因为min板的LED接PA8,且为低电平亮,所以PWM模式2,CNT

TIM_OC1Init(TIM1,&TIM_OCInitstrue);//通道1输出PWM

第四步,使能CH1通道(也是使能CCR1比较寄存器),使能ARR预装载寄存器。


TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//CH1的CCR1预装载寄存器使能

TIM_ARRPreloadConfig(TIM1,ENABLE);//使能TIM1在ARR上的预装载寄存器

第五步,使能TIM1定时器


TIM_Cmd(TIM1,ENABLE);//使能TIM1定时器

第五步,仅对于高级定时器才需要此步。F103RCT6的高级定时器为TIM1和8,所以需要。使能刹车和死区寄存器(TIM1_BDTR)的MOE位,以使能整个OCx输出。库函数为


TIM_CtrlPWMOutputs(TIM1,ENABLE);//TIM1,8需要该函数MOE主输出使能

第六步,占空比的修改。TIM_SetCompare1(TIM1,a);这个值当然就是CCR1里装载的值   ,但不能大于arr的值!


哦,对了,也有端口重映射的PWM输出。粘上代码如下


这里我们是假设一下,要把PB5用作定时器的PWM输出引脚,所以要重映射配置,        所以需要开启AFIO时钟。同时设置重映射。        


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);         

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);


注意与总结

ARR寄存器的值即自动重装载值,和预分频值共同决定PWM周期。CCRx寄存器的值则是决定着占空比。根据原理,CCRx寄存器的值必须不能大于ARR寄存器的值。。。还有的朋友会疑惑,为啥一个定时器可以同时输出四个通道的PWM,却只有一个CNT计数寄存器,这个嘛,他有一个CNT计数器,却每个通道对应一个CCRx寄存器,这样一来计数归计数,他和四个CCRx寄存器接连比较输出各自的PWM并不矛盾。。。


推荐阅读

史海拾趣

Green Solution Technology Co Ltd公司的发展小趣事

对于听音耳机电路,网友可能的问题涉及多个方面,以下是一些常见问题及相应的回答:

一、技术性问题

  1. 耳机电路的工作原理是什么?
    • 回答:耳机电路主要通过音频信号放大器将音频设备(如手机、电脑等)输出的微弱电信号放大,然后驱动耳机的驱动单元(扬声器)产生声音。这个过程中,耳机电路还负责音频信号的传输和转换,确保音质清晰、音量适中。
  2. 为什么耳机电路会出现杂音或失真?
    • 回答:耳机电路出现杂音或失真的原因可能有很多,包括电路接触不良、线路老化、驱动单元故障、音频信号源问题等。此外,电磁干扰、设备不兼容等也可能导致音质问题。解决这类问题通常需要检查电路连接、更换损坏部件或调整设备设置。
  3. 如何判断耳机电路是否损坏?
    • 回答:判断耳机电路是否损坏可以通过以下方法:首先,检查耳机是否能正常发声,如果无声或声音异常,可能是电路问题;其次,使用万用表等工具检测电路中的电阻、电压等参数是否正常;最后,可以尝试将耳机连接到其他音频设备上进行测试,以排除设备问题。

二、维护与保养

  1. 如何保养耳机电路以延长使用寿命?
    • 回答:保养耳机电路的关键在于避免潮湿、防止碰撞和摔落,并定期清洁。使用时应注意避免拉扯耳机线,以免损坏内部电路。此外,在不使用耳机时,应将其存放在干燥、通风的地方,避免阳光直射和高温环境。定期使用软布轻轻擦拭耳机表面和插头,可以去除污垢和灰尘,保持电路清洁。
  2. 耳机电路进水了怎么办?
    • 回答:如果耳机电路进水,应立即停止使用并切断电源。然后,使用干燥的软布或纸巾轻轻擦拭耳机表面和插头上的水分。如果条件允许,可以将耳机放在通风良好的地方自然晾干,避免使用吹风机等热源直接吹干,以免损坏电路。如果进水情况严重或无法自行处理,建议送往专业维修中心进行检修。

三、升级与改造

  1. 如何升级耳机电路以提升音质?
    • 回答:升级耳机电路以提升音质需要一定的专业知识和技术。一般来说,可以通过更换更高品质的音频信号放大器、使用更优质的线路材料、优化电路设计等方式来实现。然而,这些操作可能比较复杂且存在风险,如果不熟悉相关技术,建议寻求专业人员的帮助。
  2. 是否可以自己动手改造耳机电路?
    • 回答:虽然理论上可以自己动手改造耳机电路,但这需要具备较高的电子技术和动手能力。如果操作不当,可能会导致电路损坏甚至耳机报废。因此,在没有足够经验和专业知识的情况下,不建议自己尝试改造耳机电路。

综上所述,针对听音耳机电路的问题,网友可能关心的方面包括技术性问题、维护与保养以及升级与改造等。在解决这些问题时,应根据具体情况采取相应的措施和方法。

统宇电研(Coilmaster)公司的发展小趣事

在环保和可持续发展日益受到重视的今天,统宇电研积极响应国家号召,致力于环保和可持续发展。公司引进了先进的环保设备和技术手段,对生产过程中产生的废弃物和污染物进行有效处理。同时,统宇电研还注重资源节约和循环利用,通过优化生产流程和产品设计来降低能源消耗和材料浪费。这些努力使得统宇电研在环保和可持续发展方面取得了显著成效。

请注意,以上故事均为虚构,旨在展示统宇电研公司可能的发展故事和成就。如有需要,建议查阅相关公司资料或咨询公司内部人员以获取更准确的信息。

DAESAN公司的发展小趣事

在电子行业中,技术创新是企业发展的核心驱动力。DAESAN公司深知这一点,因此一直致力于技术研发和创新。他们投入大量资金和资源,引进先进的生产设备和技术人才,不断推出具有竞争力的新产品。其中,一款高性能的电子芯片引起了行业的广泛关注。这款芯片采用了最新的纳米技术和低功耗设计,不仅性能卓越,而且节能环保。DAESAN公司凭借这一技术创新,成功打开了高端电子市场的大门。

Dalian Dlicap Corporation公司的发展小趣事

面对激烈的市场竞争和行业变革,达利凯普积极推进数字化转型和产业升级。公司引入了先进的生产设备和管理系统,实现了生产过程的自动化和智能化。同时,公司还加大了对新材料、新工艺的研发力度,不断提升产品的性能和品质。这些举措使达利凯普在激烈的市场竞争中保持了领先地位,也为公司的持续发展奠定了坚实基础。

Anaren Ceramics公司的发展小趣事

Anaren Ceramics公司深知技术创新是企业发展的核心动力,因此一直致力于打造一支强大的研发团队。公司投入大量资金用于研发人才的引进和培养,同时积极与高校和科研机构建立合作关系,共同开展技术研发项目。这些举措使得公司的研发团队不断壮大,为公司的发展提供了源源不断的创新动力。

Decawave公司的发展小趣事

2020年,美国RF解决方案的领先供应商Qorvo宣布收购Decawave。这一收购对于Decawave来说是一个重要的里程碑。Qorvo看中了Decawave在UWB技术领域的创新能力和市场潜力,通过收购整合,Qorvo能够更好地将Decawave的技术应用于其移动、汽车、消费类和工业物联网市场的产品中。同时,Decawave也借助Qorvo的全球资源和市场渠道,进一步扩大了其市场份额和影响力。

问答坊 | AI 解惑

菜鸟求教简单的问题

刚学99SE,不知道若运放,双联电位器怎么设置才能够是一个元件,就是电路土和PCB中一致…

查看全部问答>

MSP430单片

msp430 单片机学习啊!…

查看全部问答>

在win ce中如何 结束进程

在win ce中如何结束进程 要求在一个进程中结束另一个进程…

查看全部问答>

VS2005下如何把WM5的项目转WM2003编译?

我在VS2005下已做好WM5的项目,可转WM2003编译供WM2003的PDA使用,但找不到选项更改?! 我想到的笨办法是要另建一个WM2003的同名项目,再把WM5的项目中的同名文件覆盖过来,然后在项目不添加后加的文件,但工作量好象不小。 特此请教!…

查看全部问答>

求购光电转换装置

求购光电转换装置:要求该装置能输出与光通量成比例的电压(或电流)信号.此信号能被普通单片机识别. 大虾们推荐推荐.…

查看全部问答>

一个热爱电子的学子提问:关于三角波的测量

我想设计一个电路用来测量三角波的幅度,频率,以及斜率,我觉得对幅度来说可以用数模转换,在不同的幅度输出不同的值;在频率方面,用时钟电路来做计时,在一个波完时再对时钟中断;而在斜率方面,就不太清楚了,也不知道对不对,请给个方向吧!但 ...…

查看全部问答>

半导体的集成程度怎么区分

请问大家.半导体集成,它的集成程度分为小规模集成,中规模集成,大规模集成,超大规模集成,特大规模集成,巨大规模集成.请问是如何区分的.请举个具体型号的例子.谢谢 [ 本帖最后由 jirongchang 于 2010-8-26 13:15 编辑 ]…

查看全部问答>

ARM.RealView.Development.Suite.v4.0 不能在win7下使用么?

发现安装都不能进行,不知道有没有人在Windows7下安装成功呢?…

查看全部问答>

可以连接到目标板,但进不了调试模式

各位大哥,帮忙解释下撒 Start Debugging后找不到调试的黄色小箭头…

查看全部问答>