- #include "pin_init.h"
- #include "hal_rcc.h"
- #include "hal_gpio.h"
- void BOARD_InitPins(void)
- {
- GPIO_Init_Type gpio_init;
- /* PA3 - UART2_RX. */
- gpio_init.Pins = GPIO_PIN_3;
- gpio_init.PinMode = GPIO_PinMode_In_Floating;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &gpio_init);
- GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_1);
-
- /* PA2 - UART2_TX. */
- gpio_init.Pins = GPIO_PIN_2;
- gpio_init.PinMode = GPIO_PinMode_AF_PushPull;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &gpio_init);
- GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_1);
- /* LED0. */
- gpio_init.Pins = GPIO_PIN_9;
- gpio_init.PinMode = GPIO_PinMode_Out_PushPull;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &gpio_init);
- GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
- /* LED1. */
- gpio_init.Pins = GPIO_PIN_10;
- gpio_init.PinMode = GPIO_PinMode_Out_PushPull;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &gpio_init);
- GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
- /* KEY0 - K2. */
- gpio_init.Pins = GPIO_PIN_5;
- gpio_init.PinMode = GPIO_PinMode_In_PullUp;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOD, &gpio_init);
- GPIO_PinAFConf(GPIOD, gpio_init.Pins, GPIO_AF_15);
-
- /* BEEP. */
- gpio_init.Pins = GPIO_PIN_6;
- gpio_init.PinMode = GPIO_PinMode_Out_PushPull;
- gpio_init.Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &gpio_init);
- GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_15);
- }
- #include <stdint.h>
- #include <stdio.h>
- #include "board_init.h"
- #include "clock_init.h"
- /*
- * Definitions.
- */
- unsigned char SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
- unsigned char SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};
- void delay(uint32_t Tms)
- {
- unsigned int i,j;
- for(i=150;i>0;i--)
- {
- for( j=Tms;j>0;j--)
- {}
- }
- }
- void PlayMusic()
- {
- unsigned int i=0,j,k;
- while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
- {
以上为实现无源蜂鸣器输出生日之歌的源代码,感兴趣的坛友可做相应的修改,编译下载实验。其实现方式是利用I/O定时翻转电平来产生驱动波形,这类无源蜂鸣器在低功耗产品应用比较广泛,比如电子表的滴滴声,生日贺卡等。实验的效果见下面视频,此次分享告一段落,咱们后会有期。