萌新的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库