ram pwm波

#include "pwm.h"
void hal_pwm_init()
{
  //rcc章节使能
  RCC->MP_AHB4ENSETR |= (0x1 << 1);
  RCC->MP_APB1ENSETR |= (0x1 << 2);

  //gpioe章节设置复用模式,AFRL设置为tim4
  GPIOB->MODER &= ~(0x3 << 12);
  GPIOB->MODER |= (0x1 << 13);
  GPIOB->AFRL &= ~(0xf << 24);
  GPIOB->AFRL |= 0x1 << 25;

  //分频器设置为208
  TIM4->PSC = 208;

  //CR1[7] = 1:设置自动重载预加载使能
  TIM4->CR1 |= (0x1 << 7);
  //CR1[6:5] = 00 :设置边沿对齐方式
  TIM4->CR1 &= ~(0x3 << 5);
  //CR1[4] = 1 :设置计数方式为递减计数方式
  TIM4->CR1 |= (0x1 << 4);
  //CR1[0] = 1 :设置计数使能
  TIM4->CR1 |= 0x1;

  //CCMR1[16][6:4] = 0110:设置pwm模式
  TIM4->CCMR1 &= ~(0x1 << 16);
  TIM4->CCMR1 &= ~(0x7 << 4);
  TIM4->CCMR1 |= (0x3 << 5);

  //CCMR1[3] = 1 :设置捕获/比较寄存器使能
  TIM4->CCMR1 |= (0x1 << 3);

  //CCMR1[1:0] = 00 :配置通道1为输出模式
  TIM4->CCMR1 &= ~(0x3 << 0);

  //CCER[3] = 0:设置捕获/比较寄存器为输出模式
  TIM4->CCER &= ~(0x1 << 3);
  //CCER[1] = 0 / 1 :设置捕获/比较寄存器起始状态为低/高电
  TIM4->CCER &= ~(0x1 << 1);
  //CCER[0] = 1 :设置捕获/比较寄存器使能
  TIM4->CCER |= (0x1 << 0);

  //自动重载ARR赋值
  TIM4->ARR = 1000;
  //ccr1赋值
  TIM4->CCR1 = 500;
}

void hal_fan_init()
{
  //rcc章节使能
  RCC->MP_AHB4ENSETR |= (0x1 << 4);
  RCC->MP_APB2ENSETR |= (0x1);

  //gpioe章节设置复用模式,AFRL设置为tim4
  GPIOE->MODER &= ~(0x3 << 18);
  GPIOE->MODER |= (0x1 << 19);
  GPIOE->AFRH &= ~(0xf << 4);
  GPIOE->AFRH |= 0x1 << 4;

  //分频器设置为208
  TIM1->PSC = 208;

   //自动重载ARR赋值
  TIM1->ARR = 1000;
  //ccr1赋值
  TIM1->CCR1 = 700;
 
  //CR1[7] = 1:设置自动重载预加载使能
  TIM1->CR1 |= (0x1 << 7);
  //CR1[6:5] = 00 :设置边沿对齐方式
  TIM1->CR1 &= ~(0x3 << 5);
  //CR1[4] = 1 :设置计数方式为递减计数方式
  TIM1->CR1 |= (0x1 << 4);
  //CR1[0] = 1 :设置计数使能
  TIM1->CR1 |= 0x1;

  //CCMR1[16][6:4] = 0110:设置pwm模式
  TIM1->CCMR1 &= ~(0x1 << 16);
  TIM1->CCMR1 &= ~(0x7 << 4);
  TIM1->CCMR1 |= (0x3 << 5);

//CCMR1[3] = 1 :设置捕获/比较寄存器使能
  TIM1->CCMR1 |= (0x1 << 3);
//CCMR1[1:0] = 00 :配置通道1为输出模式
  TIM1->CCMR1 &= ~(0x3 << 0);

  //CCER[3] = 0:
  TIM1->CCER &=~ (0x1 << 3);
  //CCER[1] = 0 / 1 :设置捕获/比较寄存器起始状态为低/高电
  TIM1->CCER &= ~(0x1 << 1);
  //CCER[0] = 1 :设置捕获/比较寄存器使能
  TIM1->CCER |= (0x1 << 0);

  TIM1->BDTR|=0x1<<15;
}

void hal_mada_init()
{
  //rcc章节使能
  RCC->MP_AHB4ENSETR |= (0x1 << 5);
  RCC->MP_APB2ENSETR |= (0x1<<3);

//gpioe章节设置复用模式,AFRL设置为tim4
  GPIOF->MODER &= ~(0x3 << 12);
  GPIOF->MODER |= (0x1 << 13);
  GPIOF->AFRL &= ~(0xf << 24);
  GPIOF->AFRL |= 0x1 << 24;

    //分频器设置为208
  TIM16->PSC = 208;

   //自动重载ARR赋值
  TIM16->ARR = 1000;
  //ccr1赋值
  TIM16->CCR1 = 700;
 
  //CR1[7] = 1:设置自动重载预加载使能
  TIM16->CR1 |= (0x1 << 7);
  //CR1[0] = 1 :设置计数使能
  TIM16->CR1 |= 0x1;

  //CCMR1[16][6:4] = 0110:设置pwm模式
  TIM16->CCMR1 &= ~(0x1 << 16);
  TIM16->CCMR1 &= ~(0x7 << 4);
  TIM16->CCMR1 |= (0x3 << 5);

//CCMR1[3] = 1 :设置捕获/比较寄存器使能
  TIM16->CCMR1 |= (0x1 << 3);
//CCMR1[1:0] = 00 :配置通道1为输出模式
  TIM16->CCMR1 &= ~(0x3 << 0);

  //CCER[3] = 0:
  TIM16->CCER &=~ (0x1 << 3);
  //CCER[1] = 0 / 1 :设置捕获/比较寄存器起始状态为低/高电
  TIM16->CCER &=~ (0x1 << 1);
  //CCER[0] = 1 :设置捕获/比较寄存器使能
  TIM16->CCER |= (0x1 << 0);

  TIM16->BDTR|=0x1<<15;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值