本文练习硬件使用STM32F103C8芯片开发板,软件使用Keil5-5.23版本安装对应Keil4兼容包,使用Keil4标准库函数开发,练习目的为掌握STM32单片机操作方法,最终独立完成相关项目,为巩固学习并分享学习经验现分享如下:
蜂鸣器相关操作
1.1 相关函数定义
- delay.h
#ifndef __DELAY_H #define __DELAY_H #include "sys.h" void delay_s(u16 s); void delay_ms(u16 ms); void delay_us(u32 us); #endif
- delay.c
#include "delay.h" #define AHB_INPUT 72 //请按RCC中设置的AHB时钟频率填写到这里(单位MHz) void delay_us(u32 uS){ //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015) SysTick->LOAD=AHB_INPUT*uS; //重装计数初值(当主频是72MHz,72次为1微秒) SysTick->VAL=0x00; //清空定时器的计数器 SysTick->CTRL=0x00000005;//时钟源HCLK,打开定时器 while(!(SysTick->CTRL&0x00010000)); //等待计数到0 SysTick->CTRL=0x00000004;//关闭定时器 } void delay_ms(u16 ms){ //mS毫秒级延时程序(参考值即是延时数,最大值65535) while( ms-- != 0){ delay_us(1000); //调用1000微秒的延时 } } void delay_s(u16 s){ //S秒级延时程序(参考值即是延时数,最大值65535) while( s-- != 0){ delay_ms(1000); //调用1000毫秒的延时 } }
- buzzer.h
#ifndef __BUZZER_H #define __BUZZER_H #include "sys.h" #define BUZZERPORT GPIOB //定义IO接口 #define BUZZER GPIO_Pin_5 //定义IO接口 void BUZZER_Init(void);//初始化 void BUZZER_BEEP1(void);//响一声 void MIDI_PLAY(void); #endif
- buzzer.c
#