stm32f030k6t6定时器14设置为PWM模式输出0-100占空比

本文详细描述了如何在STM32平台上初始化TIM14PWM,包括配置GPIO、设置定时器时基、OC初始化以及启用PWM输出。
摘要由CSDN通过智能技术生成
#define RELAY_CTRL(A)		TIM_SetCompare1(TIM14,A)//输出0-100‰的pwm

void pwm_init14()
{
  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
  TIM_OCInitTypeDef         TIM_OCInitStructure;
  GPIO_InitTypeDef          GPIO_InitStructure;
  
  /* Enable GPIOA clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  /* GPIOA Configuration: PA6(TIM3 CH1) as alternate function push-pull */
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_4);
  /* Enable TIM1 clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
  /* Time Base configuration */
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = 100-1;//不分频,PWM 频率=72000/72000=1Khz//设置自动重装载寄存器周期的值
  TIM_TimeBaseStructure.TIM_Prescaler = 23;//设置用来作为TIMx时钟频率预分频值,100Khz计数频率
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//设置时钟分割:TDTS = Tck_tim
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
  TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
  
//PWM初始化	  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
  /* Channel1 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//cnt<ccr1 为有效
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//PWM输出使能
  TIM_OCInitStructure.TIM_Pulse = 1200;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM14, &TIM_OCInitStructure);	
	TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
  /* Enable TIM1 */
  TIM_Cmd(TIM14, ENABLE);
	TIM_CtrlPWMOutputs(TIM14, ENABLE);	
  /* Enable GPIOA clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  /* Enable TIM1 clock */
	TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);
	/* Enable TIM3 */  
    TIM_Cmd(TIM14, ENABLE);
	TIM_CtrlPWMOutputs(TIM14, ENABLE);
	
}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以按照以下步骤设置stm32f103c8t6定时器输出PWM: 1. 配置GPIO为复用模式,选择PWM输出引脚 2. 配置定时器的时钟源和分频器,选择预分频和定时器时钟分频 3. 配置定时器的计数模式和自动重载值 4. 配置PWM模式,选择定时器通道,设置占空比 5. 启动定时器 下面是一个使用定时器3输出PWM的示例代码: ```c #include "stm32f10x.h" void TIM3_PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 999; //自动重装载值 TIM_TimeBaseStructure.TIM_Prescaler = 71; // 预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; //设置占空比 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_Cmd(TIM3, ENABLE); } int main(void) { TIM3_PWM_Init(); while(1) { // 程序主循环 } } ``` 在上面的示例代码中,我们使用了定时器3和PB0引脚输出PWM占空比为50%。您可以根据具体需要更改GPIO引脚和定时器配置参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值