代码
蜂鸣器
void pwm_buzzer_init()
{
RCC->MP_AHB4ENSETR |=(0x1<<1);
RCC->MP_APB1ENSETR |=(0x1<<2);
GPIOB->MODER &=(~(0x3<<12));
GPIOB->MODER |=(0x2<<12);
GPIOB->AFRL &=~(0xf<<24);
GPIOB->AFRL |=(0x2<<24);
TIM4->CR1 |=(0x1 <<7);
TIM4->CR1 &=~(0x3<<5);
TIM4->CR1 |=(0x1 <<4);
TIM4->CR1 |=(0x1 <<0);
TIM4->CCMR1 &= ~(0x1<<16);
TIM4->CCMR1 |=(0x3<<5);
TIM4->CCMR1 &= ~(0x1<<4);
TIM4->CCMR1 |=(0x1<<3);
TIM4->CCMR1 &=( ~(0x3<<0));
TIM4->CCER &=(~(0x1<<3));
TIM4->CCER |=(0x1<<1);
TIM4->CCER |=(0x1<<0);
TIM4->PSC &=(~(0xffff));
TIM4->PSC |=(0xd1);
TIM4->ARR &=(~(0xffff<<0));
TIM4->ARR |=(0xEA60);
TIM4->CCR1 &=(~(0xffffffff));
TIM4->CCR1 |=(0x7530);
}
风扇
void pwm_fan_init()
{
RCC->MP_AHB4ENSETR |=(0x1<<4);
RCC->MP_APB2ENSETR |=(0x1<<0);
GPIOE->MODER &=(~(0x3<<18));
GPIOE->MODER |=(0x2<<18);
GPIOE->AFRH &=~(0xf<<4);
GPIOE->AFRH |=(0x1<<4);
TIM1->CR1 |=(0x1 <<7);
TIM1->CR1 &=~(0x3<<5);
TIM1->CR1 |=(0x1 <<4);
TIM1->CR1 |=(0x1 <<0);
TIM1->CCMR1 &= ~(0x1<<16);
TIM1->CCMR1 |=(0x3<<5);
TIM1->CCMR1 &= ~(0x1<<4);
TIM1->CCMR1 |=(0x1<<3);
TIM1->CCMR1 &=( ~(0x3<<0));
TIM1->CCER &=(~(0x1<<3));
TIM1->CCER |=(0x1<<1);
TIM1->CCER |=(0x1<<0);
TIM1->PSC &=(~(0xffff));
TIM1->PSC |=(0xd1);
TIM1->ARR &=(~(0xffff<<0));
TIM1->ARR |=(0x3eb);
TIM1->CCR1 &=(~(0xffff));
TIM1->CCR1 |=(0x64);
TIM1->BDTR |=(0x1<<15);
}
马达
void pwm_motor_init()
{
RCC->MP_AHB4ENSETR |=(0x1<<5);
RCC->MP_APB2ENSETR |=(0x1<<3);
GPIOF->MODER &=(~(0x3<<12));
GPIOF->MODER |=(0x2<<12);
GPIOF->AFRL &=~(0xf<<24);
GPIOF->AFRL |=(0x1<<24);
TIM16->CR1 |=(0x1 <<7);
TIM16->CR1 |=(0x1 <<0);
TIM16->CCMR1 &= ~(0x1<<16);
TIM16->CCMR1 |=(0x3<<5);
TIM16->CCMR1 &= ~(0x1<<4);
TIM16->CCMR1 |=(0x1<<3);
TIM16->CCMR1 &=( ~(0x3<<0));
TIM16->CCER &=(~(0x1<<3));
TIM16->CCER |=(0x1<<1);
TIM16->CCER |=(0x1<<0);
TIM16->PSC &=(~(0xffff));
TIM16->PSC |=(0xd1);
TIM16->ARR &=(~(0xffff<<0));
TIM16->ARR |=(0x3eb);
TIM16->CCR1 &=(~(0xffffffff));
TIM16->CCR1 |=(0x64);
TIM16->BDTR |=(0x1<<15);
}
main.c
#include "pwm.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
int i,j;
for(i = 0; i < ms;i++)
for (j = 0; j < 1800; j++);
}
int main()
{
pwm_buzzer_init();
pwm_fan_init();
pwm_motor_init();
while(1)
{
}
return 0;
}