ARM PWM实验

蜂鸣器:

#include "beep.h"

void hal_beep_init()
{
    /******RCC章节*******/
    RCC->MP_AHB4ENSETR |= (0x1<<1);
    RCC->MP_APB1ENSETR |= (0x1<<2);

    /******GPIO章节******/
    GPIOB->MODER &= (~(0x3<<12));
    GPIOB->MODER |= (0x1<<13);

    GPIOB->AFRL &= (~(0xf<<24));
    GPIOB->AFRL |= (0x1<<25);


    /******TIM4章节******/
    TIM4 ->PSC = 209 - 1;
    TIM4 ->ARR = 1000;
    TIM4 ->CCR1 = 700;

    TIM4->CCMR1 &= (~(0x1<<16));
    TIM4->CCMR1 &= (~(0x7<<4));
    TIM4->CCMR1 |= (0x6<<4);

    TIM4->CCMR1 |= (0x1<<3);
   // TIM4->CCMR1 &= (0x3<<0);

    TIM4->CCER |= (0x1<<3);
    TIM4->CCER &= (~(0x1<<1));
    TIM4->CCER |= (0x1<<0);

    TIM4->CR1 |= (0x1<<7);
    TIM1->CR1 &= (~(0x3<<5));
    TIM4->CR1 |= (0x1<<4);
    TIM4->CR1 |= (0x1<<0);


}

震动马达:

#include "beep.h"

void hal_motor_init()
{
    /******RCC章节*******/
    RCC->MP_AHB4ENSETR |= (0x1<<5);
    RCC->MP_APB2ENSETR |= (0x1<<3);

    /******GPIO章节******/
    GPIOF->MODER &= (~(0x3<<12));
    GPIOF->MODER |= (0x1<<13);

    GPIOF->AFRL &= (~(0xf<<24));
    GPIOF->AFRL |= (0x1<<24);


    /******TIM16章节******/
    TIM16 ->PSC = 209 - 1;
    TIM16 ->ARR = 1000;
    TIM16 ->CCR1 = 700;

    TIM16->CCMR1 &= (~(0x1<<16));
    TIM16->CCMR1 &= (~(0x7<<4));
    TIM16->CCMR1 |= (0x6<<4);

    TIM16->CCMR1 |= (0x1<<3);
   // TIM16->CCMR1 &= (0x3<<0);

    TIM16->CCER |= (0x1<<3);
    TIM16->CCER &= (~(0x1<<1));
    TIM16->CCER |= (0x1<<0);

    TIM16->CR1 |= (0x1<<7);
    TIM1->CR1 &= (~(0x3<<5));
    TIM16->CR1 |= (0x1<<4);
    TIM16->CR1 |= (0x1<<0);
    
    TIM16->BDTR |= (0x1<<15);

}

风扇:

#include "beep.h"

void hal_fun_init()
{
    /******RCC章节*******/
    RCC->MP_AHB4ENSETR |= (0x1<<4);
    RCC->MP_APB2ENSETR |= (0x1<<0);

    /******GPIO章节******/
    GPIOE->MODER &= (~(0x3<<18));
    GPIOE->MODER |= (0x1<<19);

    GPIOE->AFRH &= (~(0xf<<4));
    GPIOE->AFRH |= (0x1<<4);


    /******TIM1章节******/
    TIM1 ->PSC = 209 - 1;
    TIM1 ->ARR = 1000;
    TIM1 ->CCR1 = 700;

    TIM1->CCMR1 &= (~(0x1<<16));
    TIM1->CCMR1 &= (~(0x7<<4));
    TIM1->CCMR1 |= (0x6<<4);

    TIM1->CCMR1 |= (0x1<<3);
  //TIM1->CCMR1 &= (~(0x3<<0));

    TIM1->CCER |= (0x1<<3);
    TIM1->CCER &= (~(0x1<<1));
    TIM1->CCER |= (0x1<<0);

    TIM1->CR1 |= (0x1<<7);
    TIM1->CR1 &= (~(0x3<<5));
    TIM1->CR1 |= (0x1<<4);
    TIM1->CR1 |= (0x1<<0);

    TIM1->BDTR |= (0x1<<15);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值