STM32F0库函数初始化系列:PWM输出

void TIM1_Configuration(void)
{
  TIM_TimeBaseInitTypeDef TIM_Time1BaseStructure;
  TIM_OCInitTypeDef TIM_OCInitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

  /* Time 定时基础设置*/
  TIM_Time1BaseStructure.TIM_Prescaler = 0;
  TIM_Time1BaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  /* Time 定时设置为上升沿计算模式*/
  TIM_Time1BaseStructure.TIM_Period = (SystemCoreClock / 40000)-1;
  TIM_Time1BaseStructure.TIM_ClockDivision = 0;
  TIM_Time1BaseStructure.TIM_RepetitionCounter = 0;

  TIM_TimeBaseInit(TIM1, &TIM_Time1BaseStructure);

  /* 频道1,2,3,4的PWM 模式设置 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable ;//TIM_OutputState_Enable; //PWM输出使能位
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable ;//TIM_OutputNState_Enable; //互补PWM输出使能位
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  //PWM 1为有效电平
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //PWM互补 0为有效电平
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

  TIM_OCInitStructure.TIM_Pulse = 600-1; //赋占空比值
  TIM_OC2Init(TIM1, &TIM_OCInitStructure);//使能频道2配置

  /* TIM1 计算器使能*/
  TIM_Cmd(TIM1, DISABLE);

  /* TIM1 主输出使能 */
  TIM_CtrlPWMOutputs(TIM1, DISABLE);  

原文地址:https://www.cnblogs.com/penuel/p/11265183.html

时间: 2024-08-30 04:53:13

STM32F0库函数初始化系列:PWM输出的相关文章

STM32F0库函数初始化系列:ADC

static void ADC_Config(void) { ADC_InitTypeDef ADC_InitStructure; /* ADCs DeInit */ //ADC_DeInit(ADC1); /* Initialize ADC structure */ ADC_StructInit(&ADC_InitStructure); /* Configure the ADC1 in continuous mode with a resolution equal to 12 bits */

STM32F4库函数初始化系列:串口DMA接收

1 u8 _data1[4]; 2 void Configuration(void) 3 { 4 USART_InitTypeDef USART_InitStructure; 5 DMA_InitTypeDef DMA_InitStructure; 6 GPIO_InitTypeDef GPIO_InitStructure; 7 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); 8 //TX 9 GPIO_InitStructure.G

STM32F4——定时器原理及应用(中断、输入捕获、PWM输出)

一.简介: 不同的STM32系列有不同数量的定时器,针对现在学习的STM32F40x系列总共有14个定时器,针对这14个定时器可以将其分为3类,高级定时器.通用定时器和基本定时器,三种定时器大同小异,下边会针对通用定时器来介绍定时器的原理和应用.对于通用定时器根据位数和计数方式的不同又可以分为3类,相关分类的图表如下: 二.应用: 1.更新:计数器的上溢或下溢.2.事件触发.3.输入捕获.4.输出比较.5.支持针对定位的增量编码和霍尔传感器电路.5.触发输入作为外部时钟或按周期电源管理.下边会针

关于普通定时器与高级定时器的 PWM输出的初始化的区别

不管是普通定时器还是高级定时器,你用哪个通道,就在程序里用OC多少.比如CH3对应OC3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  TIM_OCInitStructure.TIM_Pulse=42;

STM32 PWM输出(映射)

STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出! 要使 STM32 的通用定时器 TIMx 产生 PWM 输出,分别需要用到3个寄存器:捕获 /比较模式寄存器(TIMx_CCMR1/2).捕获/比较使能寄存器(TIMx_CCER).捕获/比较寄存器(TIMx_CCR

cortex_m3_stm32嵌入式学习笔记(九):PWM 输出实验

PWM 简介 脉冲宽度调制(PWM),是英文"Pulse Width Modulation" 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是对脉冲宽度的控制. STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM

TIMER门控模式控制PWM输出长度

TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TIM4来控制其输出与停止 //frequency_tim2:TIM2 PWM输出周期:KHz //duty_tim2:TIM2 PWM占空比 0-100 //period_tim4: TIM4控制TIM2总周期,单位0.1ms //duty_tim4: TIM4控制TIM2输出时间,单位0.1ms v

STM32F103 PWM输出实验(HAL库)

1.芯片输出PWM波形打码步骤 1.0主函数 int main(void) { HAL_Init(); //初始化HAL库 Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M delay_init(72); //初始化延时函数 uart_init(115200); //初始化串口 LED_Init(); //初始化LED TIM1_PWM_Init(20000,72); //72分频,即1M . 1000000/20000 = 50 Hz ,即20ms whil

C++ - 库函数优先级队列(priority_queue)输出最小值 代码

库函数优先级队列(priority_queue)输出最小值 代码 本文地址: http://blog.csdn.net/caroline_wendy 库函数优先级队列(priority_queue)的实现方式是堆(heap), 默认是输出最大值. 输出最小值, 须要指定參数, priority_queue<int, vector<int>, greater<int> > 代码: /* * main.cpp * * Created on: 2014.7.20 * Auth