admin 管理员组文章数量: 1086866
pwm风扇实验
pwm.h#ifndef __PWM_H__
#define __PWM_H__#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"//风扇 PE9---->TIM1_CH1
void hal_pwm_wind_init();#endifpwm.c#include "pwm.h"//风扇 PB6---->TIM_CH1
void hal_pwm_wind_init()
{//RCC章节初始化//1.使能TIM组控制器RCC->MP_APB2ENSETR |= (0x01);//2.使能GPIOB组控制器RCC->MP_AHB4ENSETR |= (0x01 << 4);//GPIO章节初始化//1.设置PE9引脚为复用功能模式GPIOE->MODER |= (0x01 << 19);GPIOE->MODER &= (~(0x01 << 18));//2.设置PB6引脚复用功能为TIM_CH1模式GPIOE->AFRH &= (~(0xF << 4));GPIOE->AFRH |= (0x1 << 4);//TIM章节的初始化 PWM频率方波为1000HZ//系统提供的时钟源为209MHZ//1.设置预分频器为209TIM1->PSC =208;//2.自动重载计数器为1000TIM1->ARR = 1000;//3.捕获比较寄存器为300TIM1->CCR1 = 300;//4.使能//自动重载计数器有缓冲区TIM1->CR1 |= (0x01 << 7);//边沿对齐模式TIM1->CR1 &= (~(0x3 << 5));//计数器使能TIM1->CR1 |= 0x1;//主输出使能TIM1->BDTR |= (0x1 << 15);//输出/捕获1模式TIM1->CCMR1 &= (~(0x7 << 4));TIM1->CCMR1 |= (0x3 << 5);TIM1->CCMR1 &= (~(0x1 << 16));//输出比较预加载使能TIM1->CCMR1 |= (0x1 << 3);//配置通道一为输出模式TIM1->CCMR1 &= (~(0x3));//设置输出极性TIM1->CCER |= (0x1 << 3);//设置输出极性初始的高低电平TIM1->CCER |= (0x1 << 1);//使能输出极性TIM1->CCER |= (0x1);//5.设置递减TIM1->CR1 |= (0x1 << 4);
}mian.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()
{hal_pwm_wind_init();while(1){}return 0;
}
本文标签: pwm风扇实验
版权声明:本文标题:pwm风扇实验 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700352013a409406.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论