定时器1 PWM输出源代码

.c文件

#include <ioCC2540.h>   
#include "PWM.h"  
  
#ifndef BV  
#define BV(n)      (1 << (n))  
#endif  
  
/******************************************************************************    
name:             T1_PWM_Init    
introduce:        定时器1输出PWM的初始化   
parameter:        none   
return:           none  
author:           neha 
changetime:       2018.6.25  
******************************************************************************/  
void T1_PWM_Init(void)  
{   
    P1DIR |= BV(0);
    P1SEL |= BV(0);    //P1.0设置为外设I/O口:定时器1通道2  
    
    PERCFG |= BV(6);   //定时器1为外设位置2(P1.0) 
    P2SEL &= ~BV(4);   //优先级控制:定时器1优先  
   
    T1CTL |= 0x02;     //1分频,从0x0000到T1CC0反复计数。
    T1CCTL2 = 0x34;    //定时器1通道2配置为比较输出,当等于T1CC0时设置,当等于T1CC2时清楚 
    T1CC0L = 32%256;  //定时器1通道0捕获/比较值低位  
    T1CC0H = 32/256;  //定时器1通道0捕获/比较值高位  
    T1CC2L = 10%256;  //定时器1通道2捕获/比较值低位  
    T1CC2H = 10/256;  //定时器1通道2捕获/比较值高位  
}

.h文件

#ifndef PWM_H
#define PWM_H

#ifndef U8
typedef unsigned char uint8;
#endif

#ifndef U16
typedef unsigned short uint16;
#endif

extern void T1_PWM_Init(void);

#endif

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
定时器1可以通过其PWM模式来实现PWM输出功能。 步骤如下: 1. 配置定时器1的时钟源和分频系数,使其工作在所需的频率范围内。 2. 配置定时器1的PWM模式,设置PWM周期和占空比。 3. 配置定时器1的输出引脚,使其输出PWM信号。 示例代码: 以下代码演示了如何使用定时器1的PWM输出功能,输出一个50%占空比、1kHz的PWM信号到PA8引脚。 ``` // 定时器1 PWM输出配置 // 1. 使能定时器1和GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA, ENABLE); // 2. 配置GPIOA8为复用推挽输出 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 3. 配置定时器1为PWM模式,设置PWM周期和占空比 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 999; // PWM周期为1ms TIM_TimeBaseStructure.TIM_Prescaler = 71; // 分频系数为72,定时器时钟频率为1MHz TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_Pulse = 499; // 占空比为50% TIM_OC1Init(TIM1, &TIM_OCInitStructure); // 4. 启动定时器1 TIM_Cmd(TIM1, ENABLE); ``` 注意:上述示例代码仅供参考,实际使用时需要根据具体的硬件平台和需求进行适当的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值