风扇,马达,蜂鸣器
#include"sp1.h"
void tim4_init()
{
//设置ahb4总线使能
RCC->MP_AHB4ENSETR |= (0x1<<1);
//设置apb1总线使能
RCC->MP_APB1ENSETR |= (0X1<<2);
//设置为复用模式
GPIOB->MODER &= (~(0x3<<12));
GPIOB->MODER |= (0x2<<12);
//设置为tim
GPIOB->AFRL &= (~(0Xf<<24));
GPIOB->AFRL |= (0x2<<24);
//设置时钟源
TIM4->PSC = 208;
//设置自动重载计数器为1000
TIM4->ARR = 1000;
//设置ccr1寄存器的值
TIM4->CCR1 = 700;
//设置通道为pwm模式
TIM4->CCMR1 &= (~(0x1<<16));
TIM4->CCMR1 &= (~(0x7<<4));
TIM4->CCMR1 |= (0x6<<4);
//设置通道为预加载使能
TIM4->CCMR1 |= (0x1<<3);
//设置通道为输出模式
TIM4->CCMR1 &= (~0x3);
//设置通道为输出模式
TIM4->CCER |= (0x1<<3);
//设置起始为高电平
TIM4->CCER &= (~(0x1<<1));
//配置输出使能
TIM4->CCER |= 0x1;
//自动加载计数器使能
TIM4->CR1 |= (0x1<<7);
//设置边沿对齐方式
TIM4->CR1 &=(~(0x3<<5));
//设置递减计数器
TIM4->CR1 |= (0x1<<4);
//计数器使能
TIM4->CR1 |= 0x1;
}
void tim1_init()
{
//PE9
//设置ahb4总线使能
RCC->MP_AHB4ENSETR |= (0x1<<4);
//设置apb2总线使能
RCC->MP_APB2ENSETR |= 0X1;
//设置为复用模式
GPIOE->MODER &= (~(0x3<<18));
GPIOE->MODER |= (0x2<<18);
//设置为tim
GPIOE->AFRH &= (~(0Xf<<4));
GPIOE->AFRH |= (0x1<<4);
//设置时钟源
TIM1->PSC = 208;
//设置自动重载计数器为1000
TIM1->ARR = 1000;
//设置ccr1寄存器的值
TIM1->CCR1 = 700;
//设置通道为pwm模式
TIM1->CCMR1 &= (~(0x1<<16));
TIM1->CCMR1 &= (~(0x7<<4));
TIM1->CCMR1 |= (0x6<<4);
//设置通道为预加载使能
TIM1->CCMR1 |= (0x1<<3);
//设置通道为输出模式
TIM1->CCMR1 &= (~0x3);
//设置通道为输出模式
TIM1->CCER |= (0x1<<3);
//设置起始为高电平
TIM1->CCER &= (~(0x1<<1));
//配置输出使能
TIM1->CCER |= 0x1;
TIM1->BDTR |= (0x1<<15);
//自动加载计数器使能
TIM1->CR1 |= (0x1<<7);
//设置边沿对齐方式
TIM1->CR1 &=(~(0x3<<5));
//设置递减计数器
TIM1->CR1 |= (0x1<<4);
//计数器使能
TIM1->CR1 |= 0x1;
}
void tim6_init()
{
//PF6
//设置ahb4总线使能
RCC->MP_AHB4ENSETR |= (0x1<<5);
//设置apb2总线使能
RCC->MP_APB2ENSETR |= 0X1<<3;
//设置为复用模式
GPIOF->MODER &= (~(0x3<<12));
GPIOF->MODER |= (0x2<<12);
//设置为tim
GPIOF->AFRL &= (~(0Xf<<24));
GPIOF->AFRL |= (0x1<<24);
//设置时钟源
TIM16->PSC = 208;
//设置自动重载计数器为1000
TIM16->ARR = 1000;
//设置ccr1寄存器的值
TIM16->CCR1 = 700;
//设置通道为pwm模式
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->BDTR |= (0x1<<15);
//自动加载计数器使能
TIM16->CR1 |= (0x1<<7);
//设置边沿对齐方式
TIM16->CR1 &=(~(0x3<<5));
//设置递减计数器
TIM16->CR1 |= (0x1<<4);
//计数器使能
TIM16->CR1 |= 0x1;
}