【【萌新的STM32学习-19-蜂鸣器实验】】

萌新的STM32学习-19-蜂鸣器实验

STM32在正点原子的视频中并未讲述关于蜂鸣器的实验,我们自己探究一下作为简单的HAL库入门
蜂鸣器每隔 300ms 响或者停一次。LED0 每隔 300ms 亮或者灭一次。LED0 亮的时候蜂鸣器不叫,而 LED0 熄灭的时候,蜂鸣器叫。
在这里插入图片描述
在这里插入图片描述
他每次都会做出一个宏定义
在这里插入图片描述
在这里插入图片描述
说实话 要不是写出来为了所谓的逻辑整洁感
我都觉得这个define 毫无意义,不如直接命名清晰
然后下面是把beep亮灯封装在一个函数里面 让人少直接调用寄存器更加简洁
在这里插入图片描述

/*** @brief 初始化 BEEP 相关 IO 口, 并使能时钟* @param 无* @retval 无*/void beep_init(void){
    
     GPIO_InitTypeDef gpio_init_struct;BEEP_GPIO_CLK_ENABLE(); /* BEEP 时钟使能 */ 
gpio_init_struct.Pin = BEEP_GPIO_PIN; /* 蜂鸣器引脚 */ 
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */ 
gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉 */



 gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */
 
 HAL_GPIO_Init(BEEP_GPIO_PORT, &gpio_init_struct); /* 初始化蜂鸣器引脚 */
  BEEP(0); /* 关闭蜂鸣器 */}
  

main.c

int main(void){
    
    
HAL_Init(); /* 初始化 HAL 库 */ 
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟,72M */
 delay_init(72); /* 初始化延时函数 */
  led_init(); /* 初始化 LED */ 
  beep_init(); /* 初始化蜂鸣器 */
   while (1) {
    
     LED0(0);
    BEEP(0); delay_ms(300);
     LED0(1); BEEP(1); 
     delay_ms(300); }}

这就是蜂鸣器实验 给人掌握的了解HAL库

猜你喜欢

转载自blog.csdn.net/weixin_50965981/article/details/132562117