#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;
}
ram pwm波
最新推荐文章于 2024-06-04 23:11:16 发布