历史上的今天
返回首页

历史上的今天

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

正在发生

2019年08月21日 | STM32的TIM1互补PWM输出

2019-08-21 来源:eefocus

芯片为STM32F412VETx,使用的是高级定时器TIM1的PWM互补PWM输出,看一下STM32CubeMX配置,

再看时钟的配置,TIM1用的是APB2的时钟,。


再看引脚的配置

产生的PWM频率为:Fpwm = 96MHz / ((95+1)(9999+1)) =100Hz,占空比为50%


然后生成代码,看下代码中的FMX_TIM1_Init函数初始化


/* TIM1 init function */

static void FMX_TIM1_Init(void)

{

 

  TIM_ClockConfigTypeDef sClockSourceConfig;

  TIM_MasterConfigTypeDef sMasterConfig;

  TIM_OC_InitTypeDef sConfigOC;

  TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;

 

  htim1.Instance = TIM1;

  htim1.Init.Prescaler = 95;

  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim1.Init.Period = 9999;

  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim1.Init.RepetitionCounter = 0;

  if (HAL_TIM_Base_Init(&htim1) != HAL_OK)  //使能TIM1时钟

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  sConfigOC.OCMode = TIM_OCMODE_PWM1;

  sConfigOC.Pulse = 5000;

  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;

  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;

  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;

  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  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;

  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

  HAL_TIM_MspPostInit(&htim1);  //引脚配置

 

}

好了到此TIM1的PWM互补已经配置完成,接下来就是要是要使能PWM输出了,接下在再main函数中使能输出就OK了。


    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);    //starts PWM on CH1 pin

    HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); //starts PWM on CH1N pin

最好用示波器看下效果图

推荐阅读

史海拾趣

Aavid Thermalloy公司的发展小趣事

Aavid Thermalloy公司是一家专注于热管理解决方案的公司,以下是关于该公司发展的五个相关故事:

  1. 公司成立和早期发展: Aavid Thermalloy公司成立于1964年,总部位于美国新罕布什尔州。最初,公司主要从事铝材料加工和制造业务,为电子行业提供散热器和热管理解决方案。在成立初期,公司注重产品质量和技术创新,逐渐赢得了客户的信赖和认可。

  2. 技术创新和产品扩展: 随着市场需求的变化和技术的进步,Aavid Thermalloy不断进行技术创新,并逐步扩展产品线。公司不仅提供各种类型的散热器产品,还涉足导热材料、热管、热板等领域,为客户提供全方位的热管理解决方案。

  3. 国际市场拓展: Aavid Thermalloy致力于拓展国际市场,与全球各地的客户建立了广泛的合作关系。公司产品远销美国、欧洲、亚洲等地区,销售网络覆盖了全球主要的电子市场。同时,公司在一些国家设立了分支机构和办事处,加强了对当地市场的服务和支持。

  4. 合并和收购: 为了进一步扩大业务规模和增强竞争力,Aavid Thermalloy进行了一系列的合并和收购活动。公司通过并购具有相关技术和市场资源的企业,扩大了产品线和市场份额,加强了在热管理领域的领先地位。

  5. 可持续发展和未来展望: Aavid Thermalloy公司致力于可持续发展,注重环境保护和社会责任。公司通过采取节能减排、提高资源利用率等措施,努力降低对环境的影响。未来,公司将继续致力于技术创新和产品升级,为客户提供更优质的产品和服务,推动热管理行业的发展和进步。

CCS[Custom Computer Services]公司的发展小趣事

在电子行业的早期,CCS公司凭借其出色的研发能力,成功开发出一款具有革命性的计算机服务软件。这款软件不仅大幅提高了计算机的运行效率,还为用户提供了更加便捷的操作体验。凭借这一技术创新,CCS公司迅速在市场中崭露头角,赢得了大量客户的青睐。随着技术的不断迭代和升级,CCS公司始终保持在行业前沿,逐渐发展成为电子行业的领军企业。

CalRamic Technologies Llc公司的发展小趣事

在巩固了国内市场地位后,CalRamic Technologies开始将目光投向国际市场。公司积极参加各类国际电子元器件展览会,与多家国际知名企业建立了合作关系。通过与国际大厂的深入交流,公司不仅拓宽了销售渠道,还引进了国际先进的生产技术和管理经验,进一步提升了自身的竞争力。

Deutsch公司的发展小趣事

人才是企业发展的核心驱动力。Deutsch公司非常重视人才引进和培养工作。公司积极招聘具有丰富经验和专业技能的人才,并为他们提供广阔的发展空间和良好的职业前景。同时,公司还注重内部人才的培养和晋升,通过培训、交流等方式提升员工的综合素质和业务能力。这些措施使得Deutsch公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

CAO Group Inc公司的发展小趣事

自创立以来,CAO Group一直致力于牙科材料和器械的研发。公司不断投入研发资源,成功推出多款具有创新性的牙科产品,如Lumist美白贴、SPRAY BOTTLE HEAD喷雾瓶头等,这些产品不仅在国内市场获得了广泛认可,还成功打入了国际市场。公司的研发实力和产品品质,使其在牙科行业中树立了良好的口碑。

FERYSTER公司的发展小趣事

FERYSTER公司的创始人在一次国际电子展览会上,被一款新型半导体芯片技术深深吸引。他意识到这项技术将引领电子行业的新一轮革命。于是,他果断决定投入大量资金和资源,组建研发团队,对该技术进行深入研究。经过数年的努力,FERYSTER公司成功掌握了这项技术,并推出了基于该技术的全新产品系列。这些产品以其卓越的性能和稳定性,迅速在市场上取得了成功,为公司的快速发展奠定了坚实基础。

问答坊 | AI 解惑

RDA 方法

我采用RDA技术,想连接后台的sql   server   2000的数据库,怎么都不好用。请问有人写过吗?…

查看全部问答>

求xscale下sdio接口的wifi模块

本人现在要在作一个类似于手机平台之类的东西,要支持wifi 和GPRS ,采用的是xscale的处理器,准备采用的操作系统是linux, 刚开始的时候我们是希望采用集成了wifi和gprs的模块,但是本人现在没有找到,或是过于大了,如果坛子里有人知道的话,还 ...…

查看全部问答>

44b0 ping不通

昨天弄了一个44b0的板子 用bootloader的tftp没有问题,但是uclinux的和主机就是ping不通,网线用的交叉直连的,ip也设置成同一网段了。uclinux是随机带的,可能会是什么问题,系统的网络不会有问题吧?望高人指点一二…

查看全部问答>

关于winCE下菜单自绘的问题

我想请问下winCE下能不能实现菜单的自绘。我用ModifyStyle不能实现。网上也有很多人提问,但是也没有人提出解决办法,小弟在这里先谢过了。主要的是在触摸屏上应用,现有的菜单太小,使用不方便。我想增大菜单的高度,如果不能实现自绘,是否有别的 ...…

查看全部问答>

主管给了我一个C写的.dll要求我的Web程序能对接,与单片机交互,怎么办

求高手解答啊``那个C写的.dll文件里面把一些东西都写好了 我不知道如何调用,如何与单片机对接啊…

查看全部问答>

求助:Local ROM 和 NOR Flash 是什么意思啊?谢谢!

请教: 我在书上看到 Local ROM NOR Flash 问题1: Local ROM 是不是相当于电脑的 内存条? NOR Flash 是不是相当于电脑的 硬盘? 问题1: Local ROM 是什么? 还有别的 ROM 吗? ROM 的主要作用是什么? 问题2: NOR Flash 是什么 ...…

查看全部问答>

彩信接收问题

在做手机上的彩信软件,彩信打包,发送的问题解决了, 现在差彩信接收的问题搞不定,彩信中心给手机发彩信 先给手机发一条带有彩信URL的短信通知,手机再根据 URL去下载彩信,这个URL我取不到,要短信那边配合, 谁有彩信接收的代码,给我发一份,可 ...…

查看全部问答>

先上传一篇FPGA-TFT的论文

TFT控制器还没有弄好,还有我们板上用的SRAM是用的70NS的芯片,感觉难满足要求,希望大家对这个TFT控制器提些建议!…

查看全部问答>

10.07【每周讨论】ubuntu软件安装问题

ubuntu不能使用sudo apt-get install安装软件,该怎么办? apt-get install安装的软件的位置在哪?…

查看全部问答>

双集电极横行PNP管?

为什么叫‘双集电极’呢?它与单集电极PNP有什么不一样吗?谢谢帮忙解惑啊~…

查看全部问答>