当前位置>首页> 问答> 科技前沿 > 正文

请问Nucleo例程TIM_PWMOutput中4路PWM通道对应哪几个口?

问题描述:

主函数如下:nucleo例程tiM_PWMOutput中4路PWM通道对应哪几个口?/**  ******************************************************************************  * @file    TIM/TIM_PWMOutput/Src/main.c  * @author  MCD Application Team  * @version V1.0.0  * @date    18-June-2014  * @brief   This sample code shows how to use STM32F0xx TIM HAL API to generate  *          4 signals in PWM.  ******************************************************************************  * @attention  *  *

© COPYRIGHT(c) 2014 STmicroelectronics

  *  * Redistribution and use in source and binary forms, with or without modIFication,  * are permitted provided that the following conditions are met:  *   1. Redistributions of source code must retain the above copyright notice,  *      this list of conditions and the following disclaimer.  *   2. Redistributions in binary form must reproduce the above copyright notice,  *      this list of conditions and the following disclaimer in the documentation  *      and/or other materials provided with the distribution.  *   3. Neither the name of STMicroelectronics nor the names of its contributors  *      may be used to endorse or promote products derived from this software  *      without specific prior written permission.  *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  *  ******************************************************************************  *//* Includes ------------------------------------------------------------------*/#include "main.h"/** @addtogroup STM32F0xx_HAL_Examples  * @{  *//** @addtogroup TIM_PWMOutput  * @{  *//* Private typedef -----------------------------------------------------------*/#define  PERIOD_VALUE       (uint32_t)(666 - 1)  /* Period Value  */#define  PULSE1_VALUE       (uint32_t)(PERIOD_VALUE/2)        /* Capture Compare 1 Value  */#define  PULSE2_VALUE       (uint32_t)(PERIOD_VALUE*37.5/100) /* Capture Compare 2 Value  */#define  PULSE3_VALUE       (uint32_t)(PERIOD_VALUE/4)        /* Capture Compare 3 Value  */#define  PULSE4_VALUE       (uint32_t)(PERIOD_VALUE*12.5/100) /* Capture Compare 4 Value  *//* Private define ------------------------------------------------------------*//* Private macro -------------------------------------------------------------*//* Private variables ---------------------------------------------------------*//* Timer handler declaration */TIM_HandleTypeDef    TimHandle;/* Timer Output Compare Configuration Structure declaration */TIM_OC_InitTypeDef sConfig;/* Counter Prescaler value */uint32_t uhPrescalerValue = 0;/* Private function prototypes -----------------------------------------------*/static void Systemclock_Config(void);static void Error_Handler(void);/* Private functions ---------------------------------------------------------*//**  * @brief  Main program.  * @param  None  * @retval None  */int main(void){  /* STM32F0xx HAL library initialization:       - Configure the Flash prefetch       - Systick timer is configured by default as source of time base, but user          can eventually implement his proper time base source (a general purpose          timer for example or other time source), keeping in mind that Time base          duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and          handLED in milliseconds basis.       - Low Level Initialization     */  HAL_Init();  /* Configure LED2 */  BSP_LED_Init(LED2);  /* Configure the system clock to 48 MHz */  SystemClock_Config();  /* Compute the prescaler value to have TIM2 counter clock equal to 16000000 Hz */  uhPrescalerValue = (uint32_t)(SystemCoreClock / 16000000) - 1;  /*##-1- Configure the TIM peripheral #######################################*/  /* -----------------------------------------------------------------------  TIM2 Configuration: generate 4 PWM signals with 4 different duty cycles.    In this example TIM2 input clock (TIM2CLK) is set to APB1 clock (PCLK1),    since APB1 prescaler is equal to 1.      TIM2CLK = PCLK1      PCLK1 = HCLK      => TIM2CLK = HCLK = SystemCoreClock    To get TIM2 counter clock at 16 MHz, the prescaler is computed as follows:       Prescaler = (TIM2CLK / TIM2 counter clock) - 1       Prescaler = ((SystemCoreClock) /16 MHz) - 1    To get TIM2 output clock at 24 KHz, the period (ARR)) is computed as follows:       ARR = (TIM2 counter clock / TIM2 output clock) - 1           = 665    TIM2 Channel1 duty cycle = (TIM2_CCR1/ TIM2_ARR + 1)* 100 = 50%    TIM2 Channel2 duty cycle = (TIM2_CCR2/ TIM2_ARR + 1)* 100 = 37.5%    TIM2 Channel3 duty cycle = (TIM2_CCR3/ TIM2_ARR + 1)* 100 = 25%    TIM2 Channel4 duty cycle = (TIM2_CCR4/ TIM2_ARR + 1)* 100 = 12.5%    Note:     SystemCoreClock variable holds HCLK frequency and is defined in system_stm32f0xx.c file.     Each time the core clock (HCLK) changes, user had to update SystemCoreClock     variable value. Otherwise, any configuration based on this variable will be incorrect.     This variable is updated in three ways:      1) by calling CMSIS function SystemCoreClockUpdate()      2) by calling HAL API function HAL_RCC_GetSysClockFreq()      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency  ----------------------------------------------------------------------- */  /* Initialize TIMx peripheral as follows:       + Prescaler = (SystemCoreClock / 16000000) - 1       + Period = (666 - 1)       + ClockDivision = 0       + Counter direction = Up  */  TimHandle.Instance = TIMx;  TimHandle.Init.Prescaler         = uhPrescalerValue;  TimHandle.Init.Period            = PERIOD_VALUE;  TimHandle.Init.ClockDivision     = 0;  TimHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;  TimHandle.Init.RepetitionCounter = 0;  if (HAL_TIM_PWM_Init(&TimHandle) != HAL_OK)  {    /* Initialization Error */    Error_Handler();  }  /*##-2- Configure the PWM channels #########################################*/  /* Common configuration for all channels */  sConfig.OCMode       = TIM_OCMODE_PWM1;  sConfig.OCPolarity   = TIM_OCPOLARITY_HIGH;  sConfig.OCFastMode   = TIM_OCFAST_DISABLE;  sConfig.OCNPolarity  = TIM_OCNPOLARITY_HIGH;  sConfig.OCIdleState  = TIM_OCIDLESTATE_RESET;  sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;  /* Set the pulse value for channel 1 */ sConfig.Pulse = PULSE1_VALUE;  if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_1) != HAL_OK)  {    /* Configuration Error */    Error_Handler();  }  /* Set the pulse value for channel 2 */  sConfig.Pulse = PULSE2_VALUE;  if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_2) != HAL_OK)  {    /* Configuration Error */    Error_Handler();  }  /* Set the pulse value for channel 3 */  sConfig.Pulse = PULSE3_VALUE;  if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_3) != HAL_OK)  {    /* Configuration Error */    Error_Handler();  }  /* Set the pulse value for channel 4 */  sConfig.Pulse = PULSE4_VALUE;  if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_4) != HAL_OK)  {    /* Configuration Error */    Error_Handler();  }  /*##-3- Start PWM signals generation #######################################*/  /* Start channel 1 */  if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_1) != HAL_OK)  {    /* PWM Generation Error */    Error_Handler();  }  /* Start channel 2 */  if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_2) != HAL_OK)  {    /* PWM Generation Error */    Error_Handler();  }  /* Start channel 3 */  if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_3) != HAL_OK)  {    /* PWM generation Error */    Error_Handler();  }  /* Start channel 4 */  if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_4) != HAL_OK)  {    /* PWM generation Error */    Error_Handler();  }  while (1)  {  }}/**  * @brief  This function is executed in case of error occurrence.  * @param  None  * @retval None  */static void Error_Handler(void){  /* Turn LED2 on */  BSP_LED_On(LED2);  while (1)  {  }}/**  * @brief  System Clock Configuration  *         The system Clock is configured as follow :   *            System Clock source            = PLL (HSI48)  *            SYSCLK(Hz)                     = 48000000  *            HCLK(Hz)                       = 48000000  *            AHB Prescaler                  = 1  *            APB1 Prescaler                 = 1  *            HSI Frequency(Hz)              = 48000000  *            PREDIV                         = 2  *            PLLMUL                         = 2  *            Flash Latency(WS)              = 1  * @param  None  * @retval None  */static void SystemClock_Config(void){  RCC_ClkInitTypeDef RCC_ClkInitStruct;  RCC_OscInitTypeDef RCC_OscInitStruct;  /* Select HSI48 Oscillator as PLL source */  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48;  RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI48;  RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIv2;  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL2;  if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK)  {    Error_Handler();  }  /* Select PLL as system clock source and configure the HCLK and PCLK1 clocks dividers */  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1);  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1)!= HAL_OK)  {    Error_Handler();  }}#ifdef  USE_FULL_ASSERT/**  * @brief  Reports the name of the source file and the source line number  *         where the assert_param error has occurred.  * @param  file: pointer to the source file name  * @param  line: assert_param error line source number  * @retval None  */void assert_failed(uint8_t *file, uint32_t line){  /* User can add his own implementation to report the file name and line number,     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  /* Infinite loop */  while (1)  {  }}#endif/**  * @}  *//**  * @}  *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

阅读751 关键字: Nucleo PWM
回答:
  • 陈明辉 2020-03-19
    前面两个通道被重映射了!
想体验5个数量级的综合计算效能提升吗?试试这款离散域超多变量复杂最优化求解芯片吧!
相关推荐
电子内窥镜解决方案
公司电子内窥镜解决方案,针对临床痛点的解决方案,包括以下产品: 1、呼吸麻醉:可视喉镜系列产品,应对新冠疫情的可视化气道管理解决方案; 2、泌尿外科:硬质电子经皮肾镜;MPCNL术式,新型李逊镜肾结石清除解决方案; 3、肝胆外科:硬质电子胆道镜;PTCSL术式,新型电子硬镜(王平镜)肝内胆管结石及微创保胆解决方案。
领域:医学影像诊断技术
轻量化“数字孪生”3D引擎推动企业数字化转型发展
公司在 “数字孪生”核心支撑技术—3D轻量化领域已耕耘多年,形成了极具门槛的核心技术积累。截止目前,已为国内超过400家客户,涵盖制造业、工程建筑行业、高等院校,提供了3D轻量化产品及技术服务,应用于近500多个重大项目或系统平台建设。 主要产品与服务有: (1) 3D/BIM/GIS轻量化融合引擎(WebGL/服务器端渲染); (2) BIM/GIS施工管理平台; (3) CAD图纸轻量化引擎(WebGL); (4) 图模管理协同平台; (5) 汇报演示系统; (6) 图模查看工具; (7) 3D可视化沙盘搭建系统; (8) 搭建智慧工厂、化工、矿山、电力领域的3D设备模型交易平台。
领域:Web服务与集成软件
药物缓释鼻腔通气及术后支撑系统
国内首家专注鼻科医疗器械研发、生产和销售的科技公司,聚焦鼻腔领域的刚需,为更高效、舒适、安全、经济的临床解决方案提供支持。 核心产品是鼻腔支架,其有效性、舒适性、安全性 均远高于被替代器材。国内尚无厂家报批,门槛高,公司有更长的高利润窗口期。 智能镍钛记忆合金制成的中空填充鼻腔支架产品,即鼻腔微创支架,前鼻孔支架,后鼻孔支架。该系列支架在临床手术后可被安置到鼻腔,并牢固地附着在鼻腔所需位置,从而起到压迫、重塑、止血的作用,并保证顺畅通气,而目前临床常用的膨胀海绵之类的填充物会堵住鼻腔,鼻腔支架产品在有效鼻腔填塞压迫塑形的同时,可以在鼻腔中形成通气通道,不影响患者的通气。鼻腔支架是医疗耗材和治疗策略的改进,有并发症无法做鼻腔手术的病人,用一种新型的诊疗方式,替代手术方案。
领域:其他
植物精油芯片缓释技术在驱蚊手环中的应用与产业化
基于药用植物精油作为天然驱蚊剂的应用前景和存在的弊端分析,项目通过研究植物精油芯片缓释技术在驱蚊手环中的应用,从精油复配、浓度配比、包裹技术等方面进行研究测试,致力于生产自带舒适圈的植物精油驱蚊手环,实现长效保护、天然安全等功能,适用于不同场景不同人群。该技术充分利用药用植物精油的良好的环境相容性、怡人的香味、对人及哺乳动物无毒、无残留等优势,对日后研发出更多更稳定、高效、实用的驱蚊产品奠定了良好的基础。公司专业从事母婴驱蚊产品的研发和制造、分销和零售,具有全球视野,产品范围涵盖运用高分子缓释技术的纯植物驱蚊产品,及蚊虫叮后护理、灭蚊器等一系列产品。
领域:天然药物生物合成制备技术
激光质子刀关键技术突破及激光器产业化
质子疗法是肿瘤放射治疗的一种,该疗法将氢原子核中的质子通过粒子加速器释放高能量射线进行治疗。 由于质子束在组织中独特的吸收曲线(称为布拉格峰),它可以提供更好的剂量分布,允许在肿瘤部位沉积最大的破坏性能量,同时最大限度地减少沿路径对健康组织的损害。 全球首创激光驱动的离子加速:相比于目前质子疗法使用的传统加速器,激光驱动的离子束加速梯度高,能在很短的距离加速到很高的能量,具有源尺寸小、脉冲短、亮度高和能谱宽等特点,在等离子体电磁场诊断、核聚变质子快点火、质子照相、癌症治疗和温稠密物质产生等方面有着广阔的应用前景。 全国产化,全球顶尖的下一代小型化激光质子刀,既完成了对传统放疗的替代,又实现了对大型加速设备的源头创新,引发成本革命,是解决商业化痛点的终局方案。
领域:新型治疗、急救与康复技术
智慧林长制全面解决方案
林长制是以保护发展森林等生态资源为目标, 以压实地方党委政府领导干部责任为核心, 以制度体系建设为保障, 以监督考核为手段, 构建由地方党委政府主要领导担任总林长, 省、市、县、乡、村分级设立林(草)长, 聚焦森林草原资源保护发展重点难点工作, 实现党委领导、党政同责、属地负责、部门协同、全域覆盖、源头治理的长效责任体系。 公司的核心技术团队均有十余年从事“智慧城市”领域的经验,具备新型智慧林业顶层设计、全面解决方案、项目研发及实施的全过程管理能力;主导和参与的项目累计金额达数亿元。 公司具备测绘高级工程师、信息化中高级工程师、系统集成等中高级工程师数十人;具有地方标准和行业标准制定能力和丰富的经验;核心成员曾主导及参与出版发行行业信息化专著。 公司主营业务是智慧/数字林业,围绕林业系统的相关业务,是林业行业领域,提供智慧林长制全面解决方案的服务商。
领域:物联网应用软件
自拟中药汤是什么?
自拟中药汤是什么?
探讨自拟中药汤配合熏蒸推拿法治疗类风湿关节炎的临床效果。方法将52例类风湿关节炎患者分为观察组和治疗组各26例,实施自拟中药汤配合熏蒸推拿法治疗,对照组患者采用常规治疗,并比较两组患者的治疗效果。
关键词:临床效果,中药汤,类风湿关节炎,推拿法
波导耦合器专利申请
波导耦合器专利申请
波导耦合器是一种常用的微波器件,用于在不同波导系统之间传输微波信号。其工作原理基于电磁波在波导内的传输特性,通过特定的结构设计,实现不同波导之间的能量耦合和传输。波导耦合器的基本结构包括输入波导口、输出波导口和耦合部件。
关键词:平面弯曲,波导器件,波导耦合器
自动投切专利申请
自动投切专利申请
自动投切是通过自动装置来实现的。这种装置能够根据电网的运行状态,通过感应器对电容器的运行进行自动调控,并在需要时自动进行投切。自动投切装置在电力系统中有着广泛的应用,包括重要机房、计算机房等关键设备的电力保障,电力系统中重要设备、通信设备的备用电源,以及火灾、地震等紧急情况下的电力供应保障。
关键词:自动投切,实现方式,并联电容器
口令码变换算法的用途
口令码变换算法的用途
口令码变换算法通常涉及一系列的操作,用于将原始口令转换为另一种形式,以增强安全性或满足特定的应用需求。
关键词:保密,加解密,大型企业,财会
半刚性基层底拉应力研发方向
半刚性基层底拉应力研发方向
半刚性基层底拉应力是指半刚性路面基层底面在行车荷载作用下产生的拉应力。在路面结构中,半刚性基层起到提高整体承载能力并降低土基承受的荷载强度的作用。然而,半刚性基层本身的拉应力相对集中,若超过极限则可能导致路面结构损坏。
关键词:正交试验,底基层,半刚性基层,设计参数,拉应力,半刚性基层底拉应力
空压机组技术哪里有?
空压机组技术哪里有?
空压机组是一种将机械能转换成气体压力能的能源转换装备,主要由泵头组件、气罐组件和管阀组件等部分组成。泵头组件是空压机的核心部件,主要负责压缩空气,完成能量的转换;气罐组件是空压机的存储部件,负责储存压缩后的气体;管阀组件是空压机的输控部件,负责连接泵头和气罐输送气体,并控制气体流通。
关键词:城际动车组,实际应用,空压机组
直接横摆力矩控制技术哪里有?
直接横摆力矩控制技术哪里有?
直接横摆力矩控制(DYC)是一种车辆运动稳定的有效方法,它通过对车轮上纵向力的调节,直接构成对车辆质心的横摆力矩,以克服车辆的前轴或后轴侧滑,提高车辆的操纵稳定性。在车辆处于低附着系数路面、大侧向加速度等极限工况下行驶时,车轮上的侧偏力已处于饱和状态,此时无法单纯依靠转向控制来提高车辆的稳定性。然而,车轮上的纵向力往往还有很大的裕度可以被利用,DYC正是基于这一原理来提高车辆的操纵稳定性。
关键词:电机驱动,分布式驱动,横摆力矩,直接横摆力矩控制
碳酸盐含量的用途
碳酸盐含量的用途
碳酸盐含量主要指的是血液中的二氧化碳含量,这是人体新陈代谢产生的废气。通过测量呼气中的二氧化碳含量,可以确定碳酸盐含量,并用于计算氧合指数。在建筑材料、食品工业、医药和环保领域,碳酸盐都有着广泛的应用。
关键词:储层,岩心,体积分数,测井资料,塔拉,碳酸盐含量
官方社群
——    我要提问    ——

您已成功提交问答

专员将会在24小时内完成审核。