历史上的今天
返回首页

历史上的今天

今天是:2025年06月21日(星期六)

2019年06月21日 | STM32 HAL库学习系列第4篇 定时器TIM--开始定时器与PWM输出配置

2019-06-21 来源:eefocus

基本流程:


1.配置定时器


2.开启定时器


3.动态改变pwm输出,改变值


 HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);


函数总结


__HAL_TIM_SET_COMPARE()   // 是设置CCRx,一般是用在PWM输出的,控制PWM占空比

__HAL_TIM_GET_COMPARE      // 是用来读取CCRx的,一般用于捕获处理

PWM输出配置:


频率设置:


static void MX_TIM2_Init(void)

{

  TIM_MasterConfigTypeDef sMasterConfig;

  TIM_IC_InitTypeDef sConfigIC;

  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;

  htim2.Init.Prescaler = (36-1);     //实际时钟频率为 72M/36=2MHz  /40000=50H,-----490HZ,改变观察电机输出状态  定时器预分频器

  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim2.Init.Period = (4082-1); //定时器周期配置    PWM频率为 490KHz                                                                   定义定时器周期,PWM频率为:168MHz/ (L298N_TIMx_PRESCALER+1)/  (L298N_TIM_PERIOD+1)                                htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;     // 时钟分频

                                      //高级定时器重复计数寄存器值   

     **高级才有

// 定义高级定时器重复计数寄存器值

//实际PWM频率为:72MHz/(L298N_TIMx_PRESCALER+1)/(L298N_TIM_PERIOD+1)/(L298N_TIM_REPETITIONCOUNTER+1)

#define L298N_TIM_REPETITIONCOUNTER        0

**

刹车和死区配置


/* 刹车和死区时间配置 */

  sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;

  sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;

  sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;

  sBreakDeadTimeConfig.DeadTime = 0;

  sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;

  sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;

  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;

  HAL_TIMEx_ConfigBreakDeadTime(&htimx_L298N, &sBreakDeadTimeConfig);

基于通信的pwm频率和脉宽的更新控制算法


/*

** pwm是否需要更新,比较上一次的频率和脉宽值,如果不同,则更新

*/

void pwm_update_loop( void )

{

    /*1,第一路判断: 频率 或 占空比发生变化 */

    if( (HLM_SOKO_I_FREQ != HLM_SOKO_I_FREQ_LAST ) ||

         HLM_SOKO_I_DUTY != HLM_SOKO_I_DUTY_LAST   )

    {

        /* 更新 频率和占空比的记录值 */

        HLM_SOKO_I_FREQ_LAST = HLM_SOKO_I_FREQ;

        HLM_SOKO_I_DUTY_LAST = HLM_SOKO_I_DUTY;

        /* 更新当前通道的PWM波形 */

        pwm_update( PWM_I,HLM_SOKO_I_FREQ, HLM_SOKO_I_DUTY );

    }

       

    /*2,第二路判断 */

    if( (HLM_SOKO_II_FREQ != HLM_SOKO_II_FREQ_LAST ) ||

         HLM_SOKO_II_DUTY != HLM_SOKO_II_DUTY_LAST   )

    {

        /* 更新 频率和占空比的记录值 */

        HLM_SOKO_II_FREQ_LAST = HLM_SOKO_II_FREQ;

        HLM_SOKO_II_DUTY_LAST = HLM_SOKO_II_DUTY;

        /* 更新当前通道的PWM波形 */

        pwm_update( PWM_II,HLM_SOKO_II_FREQ, HLM_SOKO_II_DUTY );

    }

   

    /*3,第三路判断 */

    if( (HLM_SOKO_III_FREQ != HLM_SOKO_III_FREQ_LAST ) ||

         HLM_SOKO_III_DUTY != HLM_SOKO_III_DUTY_LAST   )

    {

        /* 更新 频率和占空比的记录值 */

        HLM_SOKO_III_FREQ_LAST = HLM_SOKO_III_FREQ;

        HLM_SOKO_III_DUTY_LAST = HLM_SOKO_III_DUTY;

        /* 更新当前通道的PWM波形 */

        pwm_update( PWM_III,HLM_SOKO_III_FREQ, HLM_SOKO_III_DUTY );

    }   

}

 


补充:

开起定时器功能 

只要在相应的定时器下开始内部时钟源即可使用定时器功能


定时器内部动能:

定时器时钟配置:

M是10的6次方


微秒是10的-6次方


内部时钟设置为不分频(CKD),则CK_PSC的时钟频率等于APB1的时钟频率108MHz,即108000 000Hz。若要定时时间为1s,则即可设置10800分频(预分频器寄存器 (TIMx_PSC)的值为10800-1),定时器的时钟CK_CNT的频率为10000Hz.则自动重载寄存器 (TIMx_ARR)设置为10000-1即定时为1s.TRGO为触发输出,可以触发内部ADC/DAC,这里我们没有用到这个功能,参数为默认设置。


推荐阅读

史海拾趣

Anadigm公司的发展小趣事

Anadigm是一家曾经存在的半导体公司,专注于可编程模拟信号处理器(PASP)技术。以下是Anadigm公司发展的相关故事:

  1. 公司成立与初期发展:Anadigm公司成立于1997年,总部位于美国加利福尼亚州圣塔莫尼卡市。公司的创始人致力于开发一种新型的可编程模拟信号处理器(PASP),以应对传统模拟电路设计的局限性。通过引入数字技术,Anadigm旨在提供更灵活、高性能的模拟信号处理解决方案。

  2. PASP技术的推出与市场应用:Anadigm公司于2000年推出了其首款可编程模拟信号处理器产品系列。这些器件具有灵活的可编程性和高度集成的特点,能够适应多种应用场景,包括电力管理、医疗设备、汽车电子和工业控制等领域。Anadigm的PASP技术受到了行业的关注,并在市场上取得了一定的成功。

  3. 技术创新与产品优化:Anadigm公司不断投入研发,致力于改进其PASP技术并推出更先进的产品。公司持续与客户合作,了解市场需求并进行技术创新,以满足不断变化的行业需求。Anadigm的产品不断优化,性能不断提升,赢得了客户的信赖和市场份额的扩大。

  4. 合并与收购:尽管Anadigm公司在PASP技术方面取得了一定的成就,但面临着激烈的市场竞争和资金压力。在公司运营一段时间后,Anadigm于2008年被美国半导体公司Exar Corporation收购。此次收购使得Anadigm成为Exar的全资子公司,继续在模拟信号处理领域发展。

  5. 最终终止业务:然而,随着时间的推移,Anadigm在市场上的地位逐渐下滑,未能在激烈的竞争中保持竞争优势。最终,Exar Corporation于2014年宣布终止Anadigm的业务,并关闭其产品线。这标志着Anadigm作为一个独立的实体在半导体行业的终结。

以上是Anadigm公司发展的一些主要故事,展示了该公司从创立到终止业务的发展历程。

芯海科技(CHIPSEA)公司的发展小趣事

近年来,随着新能源汽车市场的快速崛起,BMS(电池管理系统)技术成为关键。芯海科技凭借在“模拟信号链+MCU”领域的技术积累,成功开发出应用于BMS锂电管理的高精度模拟信号链芯片。这一技术的突破使得芯海科技能够切入新能源汽车市场,为行业的发展提供了有力支持。

AIM公司的发展小趣事

随着公司业务的不断发展和产品线的丰富,AIM开始积极拓展市场,寻求更广阔的发展空间。公司积极参与国际电子展会和交流活动,与全球各地的客户和合作伙伴建立了紧密的合作关系。通过与国际知名企业的合作,AIM的产品和技术得以在全球范围内推广和应用,进一步提升了公司的知名度和影响力。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

随着公司的发展,技术创新成为推动重庆平洋电子有限公司不断前进的重要动力。公司不断加大对研发的投入,引进高端人才,积极研发新技术、新产品。经过多年的努力,公司在电子元器件领域取得了重大突破,产品性能和质量得到了显著提升,赢得了市场的广泛认可。

Epistar Corp公司的发展小趣事

近年来,随着OLED(有机发光二极管)技术的兴起,LED行业面临着巨大的挑战。Epistar敏锐地意识到了这一点,开始积极调整战略方向,加大在OLED技术领域的研发力度。同时,公司还通过优化产品结构、提高生产效率等措施降低成本、提升竞争力。这些努力使Epistar在OLED技术浪潮中保持了稳健的发展态势。

Glenair公司的发展小趣事
如果怀疑设定阈值不当,可以根据实际情况调整电路中的电位器或稳压管,以设置正确的欠电压保护阈值。

问答坊 | AI 解惑

看看你对电子行业未来的预测?

大家群策群力共同打造新一代的电子行业新景象!谢谢各位参与。也可以联系我与我共同进步和发展!!MSN:wangqingtao2119@lginnotek.com…

查看全部问答>

看看你能设计实现这个功能的电路吗

用普通的元件(不能用IC,555可以用),普通的开关(不是按钮)即只有两种态,接通/闭合; 要求:开关被打到闭合壮态时,LED亮10分钟后熄灭,         开关被打到接通壮态时,LED亮10分钟后熄灭,       & ...…

查看全部问答>

电力电子是一个大的话题

电力电子是一个大的话题,建议坛主将其作为一个主题专列。电子工程不能少了电力电子。…

查看全部问答>

wince下重启的问题

利用下面一段代码重启,发现好像是系统注销了,并没有关机重启,请问哪个地方需要修改,或者还有别的方法? #define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) #include extern \"C\" __declspec(dll ...…

查看全部问答>

mini2440的nboot(板子自带的源代码)的问题

下面是nboot loader.h中的一段定义: // NAND Boot (loads into SteppingStone) @ Block 0 #define NBOOT_BLOCK                 0 #define NBOOT_BLOCK_SIZE     ...…

查看全部问答>

发现ADC寄存器的值写不进去

怎么老是碰到点稀奇古怪的问题。ADC初始化后,那几个ADC寄存器的值始终不变,搞怪的 看下面的图: 程序已经正常跑了,然后我暂停,查看寄存器的值, 下载 (47.48 KB) 2010-9-27 11:07 PB_DDR=0x07和TIM1_ARRL=0xc6都 ...…

查看全部问答>

版主,STM32FSMCmultimaster的问题还挂着吗

                                 st的errata说stm32的fsmc在multi master访问时会bus fault,这个问题不知是否仍存在于新批号的芯片中?我目前的项 ...…

查看全部问答>

MC9SXS128与nRF24l01的程序调试问题

已经调试了很久 总是无法发送 有没有写过这个程序的大神 可以发个程序不 万分感谢…

查看全部问答>

Proteus 7.7汉化 破解版 免费下载

Proteus 7.7汉化 破解版 免费下载Proteus VSM CPU Models: 新增单片机PIC18F8680, PIC18F8585MSP430F2112, MSP430F2122, MSP430F2132, MSP430F2232, MSP430F2252, MSP430F2272MSP430F233, MSP430F235, MSP430F247, MSP430F248, MSP430F249, MSP430F ...…

查看全部问答>

XC2S500E 5PQ208I FPGA时钟问题

XC2S500E 5PQ208I这款FPGA时钟最高能到多少M?100M有么?看了说明书这个芯片是steping0,只能到90M 还有这款芯片有军工级的么? 在线等大虾…

查看全部问答>