华清远见上海中心22071班--10.23作业

一、PWM驱动蜂鸣器程序

#include "gpio.h"

/*初始化   **************/
void hal_init(gpio_t* GPIOx,tim2_3_4_5_t* TIMx)
{
	//RCC使能初始化
	RCC->MP_AHB4ENSETR |= 0x01<<1;
	RCC->MP_APB1ENSETR |= 0x01<<2;

	//GPIO初始化
	GPIOx->MODER &= ~(0x3<<12);
	GPIOx->MODER |= 0x1<<13;
	GPIOx->AFRL  &= ~(0xf<<24);
	GPIOx->AFRL  |= 0x1<<25;

	//TIM4初始化
	TIMx->CR1 &= ~(0xf<<4);
	TIMx->CR1 |=0x1<<7;
	TIMx->CR1 |=0x1<<4;
	TIMx->CR1 |=0x1;

	TIMx->CCMR1 &= ~(0x1<<16);
	TIMx->CCMR1 &= ~(0x7<<4);
	TIMx->CCMR1 |=0x3<<5;
	TIMx->CCMR1 |=0x1<<3;
	TIMx->CCMR1 &=~(0x3);

	TIMx->CCER |=0x1<<3;
	TIMx->CCER &= ~(0x3);
	TIMx->CCER |= 0x1;

	TIMx->PSC = 208;

	TIMx->ARR = 1000;

	TIMx->CCR1 = 300;

	
}




#ifndef __GPIO_H__
#define __GPIO_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
#include "stm32mp1xx_rcc.h"

void hal_init(gpio_t* GPIOx,tim2_3_4_5_t* TIMx);
#endif





#include "gpio.h"
extern void printf(const char *fmt, ...);
int main()

{

	hal_init(GPIOB,TIM4);

	while(1);

	return 0;

}

二、PWM驱动风扇

#ifndef __GPIO_H__
#define __GPIO_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
#include "stm32mp1xx_rcc.h"
void hal_init(gpio_t* GPIOx,tim1_t* TIMx);
#endif



#include "gpio.h"

/*初始化   **************/
void hal_init(gpio_t* GPIOx,tim1_t* TIMx)
{
	//RCC使能初始化
	RCC->MP_AHB4ENSETR |= 0x01<<4;
	RCC->MP_APB2ENSETR |= 0x01;

	//GPIO初始化
	GPIOx->MODER &= ~(0x3<<18);
	GPIOx->MODER |= 0x1<<19;//复用模式
	GPIOx->AFRH  &= ~(0xf<<4);
	GPIOx->AFRH  |= 0x1<<4;//和tim1复用 0001 af1

	//TIM1初始化
	TIMx->CR1 &= ~(0xf<<4);
	TIMx->CR1 |=0x1<<7;
	TIMx->CR1 |=0x1<<4;
	TIMx->CR1 |=0x1;

	TIMx->CCMR1 &= ~(0x1<<16);
	TIMx->CCMR1 &= ~(0x7<<4);
	TIMx->CCMR1 |=0x3<<5;
	TIMx->CCMR1 |=0x1<<3;
	TIMx->CCMR1 &=~(0x3);

	TIMx->CCER |=0x1<<3;
	TIMx->CCER &= ~(0x3);
	TIMx->CCER |= 0x1;

	TIMx->BDTR |= 0x1<<15;

	TIMx->PSC = 208;

	TIMx->ARR = 1000;

	TIMx->CCR1 = 800;

	
}









#include "gpio.h"
extern void printf(const char *fmt, ...);
int main()

{

	hal_init(GPIOE,TIM1);

	while(1);

	return 0;

}

三、PWM驱动马达

#ifndef __GPIO_H__
#define __GPIO_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
#include "stm32mp1xx_rcc.h"

void hal_init(gpio_t* GPIOx,volatile tim16_17_t* TIMx);
#endif


#include "gpio.h"

/*初始化   **************/
void hal_init(gpio_t* GPIOx,volatile tim16_17_t* TIMx)
{
	//RCC使能初始化
	RCC->MP_AHB4ENSETR |= 0x01<<5;
	RCC->MP_APB2ENSETR |= 0x01<<3;

	//GPIO初始化
	GPIOx->MODER &= ~(0x3<<12);
	GPIOx->MODER |= 0x1<<13;//复用模式
	GPIOx->AFRL  &= ~(0xf<<24);
	GPIOx->AFRL  |= 0x1<<24;//和tim16复用 0001 af1

	//TIM1初始化
	TIMx->CR1 &= ~(0xf<<4);
	TIMx->CR1 |=0x1<<7;
	TIMx->CR1 |=0x1<<4;
	TIMx->CR1 |=0x1;

	TIMx->CCMR1 &= ~(0x1<<16);
	TIMx->CCMR1 &= ~(0x7<<4);
	TIMx->CCMR1 |=0x3<<5;
	TIMx->CCMR1 |=0x1<<3;
	TIMx->CCMR1 &=~(0x3);

	TIMx->CCER |=0x1<<3;
	TIMx->CCER &= ~(0x3);
	TIMx->CCER |= 0x1;

	TIMx->BDTR |= 0x1<<15;

	TIMx->PSC = 208;

	TIMx->ARR = 1000;

	TIMx->CCR1 = 800;

	
}





#include "gpio.h"

extern void printf(const char *fmt, ...);
int main()

{

	hal_init(GPIOF,TIM16);

	while(1);

	return 0;

}



你可能感兴趣的:(stm32,嵌入式硬件)