STM32之定时器(实例)

PWM输出实例:
PWM在电力电子技术中占据着重要的地位,被广泛地用在逆变电路之中。利用STM32定时器的PWM输出功能,可以直接获取PWM波。根据面积等效原理,利用规则采样法、查表法可以调制出SPWM波及各种调制PWM波形。
这里实现的是输入占空比固定的PWM波形
PS:
通用定时器TIM3产生4路不同占空比的PWM波。(仅仅适合本实例))
TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%
TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%
TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%
TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%

main函数:
int main(void)
{
TIM3_PWM_Init();
while(1)
{}
}

main函数十分简单,调用 TIM3_PWM_Init()把TIM初始化成PWM输出模式后,内核就把所有的工作都交给TIM外设,完全有TIM来控制GPIO引脚输出PWM波.

定时器初始化:
void TIM3_PWM_Init(void)
{
TIM3_GPIO_Config();
TIM3_Mode_Config();
}
调用TIM3_GPIO_Config()作为TIM外设通道复用的GPIO引脚进行初始化,再调用TIM3_Mode_Config()对TIM外设进行初始化.

GPIO初始化:
static void TIM3_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/使能TIM3时钟/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/使能GPIO引脚 4个通道 GPIOA_Pin6和Pin7 GPIOB_Pin0和Pin1/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(G
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 中,基本定时器 (TIM6 和 TIM7) 是两个只有一个计数器的定时器,主要用于生成固定的时间延迟和定时中断。下面是一个使用 TIM6 的例子,来生成 1 秒的时间延迟和定时中断: 1. 配置 TIM6 的时钟源和时钟分频,使其工作频率为 1 MHz: ```c RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // 使能 TIM6 时钟 TIM6->PSC = 7999; // 分频系数 ``` 2. 配置 TIM6 的自动重载寄存器 (ARR) 和计数器 (CNT),使其产生 1 秒的时间延迟和定时中断: ```c TIM6->ARR = 999; // 定时器自动重载值 TIM6->CNT = 0; // 定时器计数器初值 ``` 3. 配置 TIM6 的控制寄存器 (CR1) 和中断寄存器 (DIER),使其启用中断和计数器,并启动计数器: ```c TIM6->CR1 |= TIM_CR1_ARPE | TIM_CR1_CEN; // 使能自动重载和计数器 TIM6->DIER |= TIM_DIER_UIE; // 使能更新中断 NVIC_EnableIRQ(TIM6_DAC_IRQn); // 使能 TIM6 中断 ``` 4. 在中断服务函数中处理定时中断: ```c void TIM6_DAC_IRQHandler(void) { if (TIM6->SR & TIM_SR_UIF) { TIM6->SR &= ~TIM_SR_UIF; // 清除中断标志 // 处理定时中断 } } ``` 通过上述步骤,我们就可以使用 TIM6 定时器生成 1 秒的时间延迟和定时中断了。需要注意的是,TIM6 的时钟源是 APB1 总线,因此需要根据 APB1 总线的时钟频率来计算分频系数。在上面的例子中,我们使用了一个分频系数为 7999,使得 TIM6 的工作频率为 1 MHz,从而实现了 1 秒的定时中断。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值