华清远见上海中心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;

}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值