完成风扇马达的初始化
//fan.c
#include "fan.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
//TIM1-------PE9
void fan_init()
{
//RCC章节初始化
//使能GPIOE
RCC->MP_AHB4ENSETR |= (0x1<<4);
//使能TIM1
RCC->MP_APB2ENSETR |= (0x1);
//GPIO章节初始化
//设置PE9为复用功能
GPIOE->MODER &= (~(0x3<<18));
//设置复用功能TIM1_CH1
GPIOE->MODER |= (0x2<<18);
//设置AFRH寄存器
GPIOE->AFRH &= (~(0xF<<4));
GPIOE->AFRH |= (0x1<<4);
//TIM1章节初始化
//设置预分频器的值为208
TIM1->PSC=0xD0;
//设置自动重载计数器的值为1000
TIM1->ARR=0x3E8;
//设置捕获/比较寄存器的值为700
TIM1->CCR1=0x2BC;
//设置主输出使能
TIM1->BDTR |= (0x1<<15);
//设置输出比较模式为PWM模式
TIM1->CCMR1 |= (0x1<<16);
TIM1->CCMR1 &= (~(0x7<<4));
TIM1->CCMR1 |= (0x6<<4);
//设置输出比较预加载使能
TIM1->CCMR1 |= (0x1<<3);
//设置通道1为输出模式
TIM1->CCMR1 &= (~(0x3));
//设置捕获/比较寄存器输出极性
TIM1->CCER &= (~(0x1<<3));
//设置捕获/比较寄存器输出极性为低电平
TIM1->CCER |= (0x1<<1);
//设置捕获/比较寄存器使能
TIM1->CCER |= (0x1);
//设置自动重载计数器使能
TIM1->CR1 |= (0x1<<7);
//设置定时器为边沿对齐
TIM1->CR1 &= (~(0x3<<5));
//设置计数器为递减计数器
TIM1->CR1 |= (0x1<<4);
//设置计数器使能
TIM1->CR1 |= (0x1);
}
//motor.c
#include "motor.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
//TIM16------PF6
void motor_init()
{
//RCC章节初始化
RCC->MP_AHB4ENSETR |= (0x1<<5);
RCC->MP_APB2ENSETR |= (0x1<<3);
//GPIO章节初始化
GPIOF->MODER &= (~(0x3<<12));
GPIOF->MODER |= (0x2<<12);
GPIOF->AFRL &= (~(0xF<<24));
GPIOF->AFRL |= (0x1<<24);
//TIM16章节初始化
TIM16->PSC=0xD0;
TIM16->ARR=0x3E8;
TIM16->CCR1=0x2BC;
TIM16->BDTR |= (0x1<<15);
TIM16->CCMR1 |= (0x1<<16);
TIM16->CCMR1 &= (~(0x7<<4));
TIM16->CCMR1 |= (0x6<<4);
TIM16->CCMR1 |= (0x1<<3);
TIM16->CCMR1 &= (~(0x3));
TIM16->CCER &= (~(0x1<<3));
TIM16->CCER |= (0x1<<1);
TIM16->CCER |= (0x1);
TIM16->CR1 |= (0x1<<7);
//TIM16->CR1 &= (~(0x3<<5));
//TIM16->CR1 |= (0x1<<4);
TIM16->CR1 |= (0x1);
}