一、模块介绍
控制LED灯的亮灭和蜂鸣器的开关。
购买链接:
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-18748153240.71.3afa2366yqRAJh&id=576040361356
LED是英文Light Emitting Diode的缩写,译为发光二极管。是由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。发光二极管是半导体二极管中的一种,可以把电能转换成光能,与普通二极管一样具有单向导电性。
蜂鸣器分为压电式蜂鸣器和电磁式蜂鸣器两种类型,电磁式蜂鸣器又分为有源和无源两种类型,该模块中使用的蜂鸣器是有源电磁式蜂鸣器。
有源电磁式蜂鸣器的工作信号为直流电,蜂鸣器的内部震荡电路可以将直流电转换为脉冲信号,当脉冲信号的电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动从而发声。
二、原理分析
LED通过三极管控制电流是否导通,当引脚GPH_1输出为高电平时,导通三极管,使电流通过LED,从而LED产生光亮。
蜂鸣器同样是使用三极管控制电流的导通,当引脚GPH_0输出高电平时,导通三极管,使电流通过蜂鸣器,从而蜂鸣器产生声响。
三、代码解读
初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
一、对GPIO进行初始化
调用GPIO_Init函数配置GPIO参数。要注意GPIO在使用之前,要先使能对应的时钟。
二、根据需求设置GPIO口的状态
调用 GPIO_SetBits函数或者 GPIO_ResetBits函数设置GPIO的电平状态。
四、实践操作
一、实验操作步骤:
将 STM32F103核心板正确插接到魔法师 M3/M4 底板上,连接好 J-link 与 PC 机;
将 LED-蜂鸣器模块插到底板 P8 口,底板拨码 S1 拨向 ON 端;
编译整个工程,打开底板电源,烧写程序到核心板,并按一次复位按键。
二、实验现象:
串口首先打印菜单信息;
串口输入1-LED 亮,2-LED灭;4-蜂鸣器发声,5-蜂鸣器息声;其他提示错误。