看图,N Buz低电平蜂鸣器就响,因为是v1.1的板子,是pnp三极管
对应PB4
keil的help里可以查error
keil4函数里的变量声明要放在第一行,不然链接时会报错
最近用STM32F103T8做项目,发现PB3和PB4这两个IO不可控,一直是高电平;
原因是PB3和PB4在系统复位时候,分别默认为SYS_JIDO和SYS_HJTRST;
故
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
buz头文件
#ifndef __BUZ_H
#define __BUZ_H
#include "stm32f10x.h"
void Buz_Init(void);
void Buz_Beep(void);
void Buz_Quiet(void);
#endif
buz.c文件
#include "buz.h"
void Buz_Init()
{
GPIO_InitTypeDef Buz_GPIO_Struct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
Buz_GPIO_Struct.GPIO_Pin=GPIO_Pin_4;
Buz_GPIO_Struct.GPIO_Speed=GPIO_Speed_50MHz;
Buz_GPIO_Struct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&Buz_GPIO_Struct);
//GPIO_WriteBit(GPIOB,GPIO_Pin_4,Bit_RESET);
}
void Buz_Beep(void)
{
GPIO_WriteBit(GPIOB,GPIO_Pin_4,Bit_RESET);
}
void Buz_Quiet(void)
{
GPIO_WriteBit(GPIOB,GPIO_Pin_4,Bit_SET);
}
main.c
#include "stm32f10x.h"
#include "lcd.h"
#include "buz.h"
u32 TimingDelay = 0;
void Delay_Ms(u32 nTime);
//Main Body
int main(void)
{
SysTick_Config(SystemCoreClock/1000);
Delay_Ms(200);
STM3210B_LCD_Init();
LCD_Clear(Blue);
Buz_Init();
while(1)
{
Buz_Beep();
Delay_Ms(10);
Buz_Quiet();
Delay_Ms(1000);
}
}
//
void Delay_Ms(u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
可以用蜂鸣器演奏音乐的,日后有空可以试试。