1.编写蜂鸣器/风扇/马达代码

该代码段展示了如何对STM32微控制器的PWM模块进行初始化,包括蜂鸣器、风扇和马达的控制。通过设置RCC寄存器开启相应外设时钟,配置GPIO引脚为AF模式,并设定定时器参数来实现PWM输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能文件

 #include"pwm.h"                                  
                                                  
 //蜂鸣器初始化                                   
 void beep_init()                                 
 {                                                
     //rcc章节                                    
     RCC->MP_AHB4ENSETR|=(0x1<<1);                
     RCC->MP_APB1ENSETR|=(0x1<<2);                
     //gpio章节                                   
     GPIOB->MODER&=(~(0x1<<12));                  
     GPIOB->MODER|=(0x1<<13);                     
                                                  
     GPIOB->AFRL&=(~(0xf<<24));                   
     GPIOB->AFRL|=(0x1<<25);                      
                                                  
     //TIM4章节                                   
     TIM4->PSC=208;                               
     TIM4->ARR=1800;                              
                                                  
     TIM4->CR1|=0x1;                              
     TIM4->CR1|=(0x1<<7);                         
     TIM4->CR1&=(~(0x3<<5));                      
     TIM4->CR1|=(0x1<<4);                         
                                                  
     TIM4->CCMR1&=(~(0x1<<16));                   
     TIM4->CCMR1&=(~(0x7<<4));                    
     TIM4->CCMR1|=(0x3<<5);                       
     TIM4->CCMR1|=(0x1<<3);                       
     TIM4->CCMR1&=(~0x3);                         
                                                  
     TIM4->CCER&=(~(0x1<<3));                     
     TIM4->CCER&=(~(0x1<<1));                     
     TIM4->CCER|=0x1;                             
                                                  
     TIM4->CCR1=700;                              
 }                                                
                                                  
 //风扇初始化                                     
 void fan_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=208;                               
     TIM1->ARR=1800;                              
                                                  
     TIM1->CR1|=0x1;                              
     TIM1->CR1|=(0x1<<7);                         
     TIM1->CR1&=(~(0x3<<5));                      
     TIM1->CR1|=(0x1<<4);                         
                                                  
     TIM1->CCMR1&=(~(0x1<<16));                   
     TIM1->CCMR1&=(~(0x7<<4));                    
     TIM1->CCMR1|=(0x3<<5);                       
     TIM1->CCMR1|=(0x1<<3);                       
     TIM1->CCMR1&=(~0x3);                         
                                                  
     TIM1->CCER&=(~(0x1<<3));                     
     TIM1->CCER&=(~(0x1<<1));                     
     TIM1->CCER|=0x1;                             
                                                  
     TIM1->CCR1=700;                              
                                                  
     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章节                                   
     TIM16->PSC=208;                              
     TIM16->ARR=1800;                             
                                                  
     TIM16->CR1|=0x1;                             
     TIM16->CR1|=(0x1<<7);                        
     TIM16->CR1&=(~(0x3<<5));                     
     TIM16->CR1|=(0x1<<4);                        
                                                  
     TIM16->BDTR|=(0x1<<15);                      
                                                  
     TIM16->CCMR1&=(~(0x1<<16));                  
     TIM16->CCMR1&=(~(0x7<<4));                   
     TIM16->CCMR1|=(0x3<<5);                      
     TIM16->CCMR1|=(0x1<<3);                      
     TIM16->CCMR1&=(~0x3);                        
                                                  
                                                  
     TIM16->CCER&=(~(0x1<<3));                    
     TIM16->CCER&=(~(0x1<<1));                    
     TIM16->CCER|=0x1;                            
                                                  
     TIM16->CCR1=700;                             
                                                  
 }                                                
                                                  
                                                  
                                                  
                                                  

头文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值