嵌入式马达/蜂鸣器/风扇实验

程序:

pwm.h:

#ifndef __PWM_H__
#define __PWM_H__

#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_tim.h"
//蜂鸣器初始化
void beep_init();

//风扇初始化
void fan_init();

//马达初始化
void monitor_init();





#endif

pwm.c:

#include "pwm.h"

//蜂鸣器初始化
void 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章节初始化 1000HZ~2000HZ**/
	//设置分频器
	TIM4->PSC=208;
	//初始化计数器
	TIM4->CR1|=(0x1<<7);
	TIM4->CR1&=(~(0x3<<5));
	TIM4->CR1|=(0x1<<4);
	TIM4->CR1|=(0x1<<0);

	//设置ARR寄存器值为1000
	TIM4->ARR=1000;

	//设置捕获计数器
	TIM4->CCER&=(~(0x1<<3));
	TIM4->CCER&=(~(0x1<<1));
	TIM4->CCER|=(0x1);

	//设置捕获数700
	TIM4->CCR1=700;

	//设置通道
	TIM4->CCMR1&=(~(0x1<<16));
	TIM4->CCMR1&=(~(0x7<<4));
	TIM4->CCMR1|=(0x6<<4);

}

//风扇初始化
void fan_init()
{
	/**************RCC章节初始化*************/               
	RCC->MP_AHB4ENSETR|=(0x1<<4);                            
	RCC->MP_APB2ENSETR|=(0x1);                            

	/*************GPIO章节初始化*************/               
	GPIOE->MODER&=(~(0x3<<18));                              
	GPIOE->MODER|=(0x1<<19);                                 
	GPIOE->AFRH&=(~(0xf<<4));                               
	GPIOE->AFRH|=(0x1<<4);                                  

	/*********TIM4章节初始化 1000HZ~2000HZ**/                
	//设置分频器                                             
	TIM1->PSC=208;                                           
	//初始化计数器                                           
	TIM1->CR1|=(0x1<<7);                                     
	TIM1->CR1&=(~(0x3<<5));                                  
	TIM1->CR1|=(0x1<<4);                                     
	TIM1->CR1|=(0x1<<0);                                     

	//设置ARR寄存器值为1000                                  
	TIM1->ARR=1000;                                          

	//设置捕获计数器                                         
	TIM1->CCER&=(~(0x1<<3));                                 
	TIM1->CCER&=(~(0x1<<1));                                 
	TIM1->CCER|=(0x1);                                       

	//设置捕获数700                                          
	TIM1->CCR1=700;                                          

	//设置通道                                               
	TIM1->CCMR1&=(~(0x1<<16));                               
	TIM1->CCMR1&=(~(0x7<<4));                                
	TIM1->CCMR1|=(0x6<<4);                                   
	
	TIM1->BDTR|=(0x1<<15);

}

//马达初始化
void monitor_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);                                               

	/*********TIM4章节初始化 1000HZ~2000HZ**/                            
	//设置分频器                                                         
	TIM16->PSC=208;                                                       
	//初始化计数器                                                       
	TIM16->CR1|=(0x1<<7);                                                 
	TIM16->CR1&=(~(0x3<<5));                                              
	TIM16->CR1|=(0x1<<4);                                                 
	TIM16->CR1|=(0x1<<0);                                                 

	//设置ARR寄存器值为1000                                              
	TIM16->ARR=1000;                                                      

	//设置捕获计数器                                                     
	TIM16->CCER&=(~(0x1<<3));                                             
	TIM16->CCER&=(~(0x1<<1));                                             
	TIM16->CCER|=(0x1);                                                   

	//设置捕获数700                                                      
	TIM16->CCR1=700;                                                      

	//设置通道                                                           
	TIM16->CCMR1&=(~(0x1<<16));                                           
	TIM16->CCMR1&=(~(0x7<<4));                                            
	TIM16->CCMR1|=(0x6<<4);                                               

	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()
{
	while(1)
	{
		beep_init();
		fan_init();
		monitor_init();
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目开发环境 Linux+Arm53+C语言   项目需求    功能类别 功能名称 描述 家电控制模块 1、空调控制模块 信息显示 显示当前室内温度 自动控制 设置空调在某温度下自动开、关  2、风扇控制模块 状态显示 风扇开、关 自动控制 设置风扇的档数 3、灯光控制模块 状态控制 灯光的开/关控制 亮度 正常、节能  4、窗帘控制模块 自动开/关 根据室外的亮度自动开启/关闭窗帘 手动开/关 读取当前窗帘状态,手动开启/关闭 监控模块  1、烟感监控 自动控制 超过限量烟雾浓渡报警  2、红外监控 自动控制 有人非法闯进报警  3、报警功能 自动控制 打开、关闭  4、GPRS模块 信息收发 当有报警信息的时候,系统会自动将警报信息发送到指定的手机号码。 信息设定 设定接收信息的手机号  5、访客视频对讲 状态显示 观察访客信息、自定义门锁开、关 娱乐模块  1、收音机 状态控制 开、关 自定义 更换频道 自动调节声音 增大、减小  2、家庭影院 灯光控制 亮度效果调节 自动调节声音 增大、减小  3、音频播放 状态控制 开、关 自动调节声音 增大、减小 自定义模 选择播放、随机播放、顺序播放、列表循环  4、数码相册 状态控制 开、关 自定义模 选择播放、随机播放、顺序播放、列表循环 场景切换  1、在家模 状态控制 家居电器开关、灯光亮度、监控状态  2、离家模    项目源码结构:     |--bin            脚本目录         |--tar.sh     项目打包脚本     |--data           数据目录     |--include        头文件         |--beep.h     蜂鸣器模块         |--bmp.h      BMP图模块         |--config.h   项目配置文件         |--file.h     文件操作模块         |--jpeg.h     JPG图模块         |--led.h      LED模块         |--mp3.h      音频模块         |--mplayer.h  音频库模块         |--res.h      资源配置文件         |--tslib.h    触摸模块         |--ui.h       UI模块         |--vedio.h    视频模块     |--lib            库文件     |--pic            资源图片         |--icon       应用图标         |--ui         UI文件     |--shortcut       项目效果图     |--ext            第三方库         |--driver     驱动         |--lib        第三方库     |--src            代码目录         |--main.c     主程序         |--Makfile    自动编译脚本 --------------------- 作者:qq_39188039 来源:CSDN 原文:https://blog.csdn.net/qq_39188039/article/details/83751526 版权声明:本文为博主原创文章,转载请附上博文链接!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值