N32G031固件库开发(五)高级定时器TIM1----PWM输出

 高级控制定时器(TIM1 和 和 TIM8 )
5.1 TIM1 和 和 TIM8 简介
高级控制定时器(TIM1 和 TIM8)主要用于以下场合:对输入信号进行计数、测量输入信号的脉冲宽度和产生输出波形等。高级定时器具有互补输出功能、死区插入和刹车功能。适用于电机控制。
5.2 TIM1 和 和 TIM8 主要特性
 16 位自动装载计数器。(可实现向上计数、向下计数、向上/下计数)
 16 位可编程预分频器。(分频系数可配置为 1 到 65536 之间的任意值)
 可编程重复计数器
 TIM1 最多 6 个通道,TIM8 最多 6 个通道
 4 个捕获/比较通道,工作模式为:PWM输出、输出比较、单脉冲模式输出、输入捕获
 如下事件发生时产生中断/DMA:
 更新事件
 触发事件
 输入捕获
 输出比较
 刹车信号输入
 死区时间可编程的互补输出
 对于 TIM1、TIM8,通道 1、2、3 支持此功能
 可通过外部信号控制定时器
 多个定时器内部连接在一起,以实现定时器的同步或链接
 TIM1_CC5 和 TIM8_CC5 用于比较器消隐
 TIM1_CC6 用于 OPAMP1 和 OPAMP2 的输入通道切换
 增量(正交)编码器接口:用于追踪运行轨迹和解析旋转方位
 霍尔传感器接口:用于三相电机控制

 高级定时器PWM输出程序配置

//使用 TIM1 的CH3(PA5)    
void TIM1_PWM_Init(u32 arr,u32 psc)     
{
	GPIO_InitType GPIO_InitStructure;
	TIM_TimeBaseInitType TIM_TimeBaseStructure;
	OCInitType TIM_OCInitStructure;

    /* TIM3 clock enable */
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM1, ENABLE);

    /* GPIOA and GPIOB clock enable */
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | 
    RCC_APB2_PERIPH_AFIO,ENABLE);
													
													
    GPIO_InitStruct(&GPIO_InitStructure);
    /* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */
    GPIO_InitStructure.Pin        = GPIO_PIN_5;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Current = GPIO_DC_LOW;
    GPIO_InitStructure.GPIO_Alternate = GPIO_AF3_TIM1;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
		
    /* Time base configuration */
    TIM_TimeBaseStructure.Period    = arr;
    TIM_TimeBaseStructure.Prescaler = psc;
    TIM_TimeBaseStructure.ClkDiv    = 0;
    TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

    TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);
		
	 //pwm通道配置
    TIM_OCInitStructure.OcMode       = TIM_OCMODE_PWM2;//使用pwm2模式
    TIM_OCInitStructure.OutputState  = TIM_OUTPUT_STATE_ENABLE;//pwm 输出使能--内部通过这个直接控制了pwm输出,
    TIM_OCInitStructure.OutputNState = TIM_OUTPUT_NSTATE_ENABLE;//互补输出使能
//  TIM_OCInitStructure.Pulse        = Channel1Pulse;
    TIM_OCInitStructure.OcPolarity   = TIM_OC_POLARITY_LOW;//有效电平
    TIM_OCInitStructure.OcNPolarity  = TIM_OCN_POLARITY_LOW;//有效空闲电平
    TIM_OCInitStructure.OcIdleState  = TIM_OC_IDLE_STATE_SET;//空闲电平
    TIM_OCInitStructure.OcNIdleState = TIM_OC_IDLE_STATE_RESET;//互补空闲电平
		
	TIM_InitOc3(TIM1, &TIM_OCInitStructure);

	TIM_ConfigOc3Preload(TIM1, TIM_OC_PRE_LOAD_ENABLE);

    TIM_ConfigArPreload(TIM1, ENABLE);

    /* TIM3 enable counter */
    TIM_Enable(TIM1, ENABLE);
		
    /* TIM1 Main Output Enable */
    TIM_EnableCtrlPwmOutputs(TIM1, ENABLE);//高级定时器需要开启
}
int main(void)
{
		vAllOutputPinInit();
		TIM1_PWM_Init(1200-1,800-1);//50HZ


    while (1)
    {          
	  DC12V_WS_EN(1);
	  TIM_SetCmp3(TIM1,900);//%75占空比					
    }
}

编译程序下载到芯片用逻辑分析仪可以查看波形---- 输出波形符合程序设计波形

PA5

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂造机人~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值