STM32——LED闪烁&LED流水灯&蜂鸣器工程

1.LED闪烁工程

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	//GPIO_SetBits(GPIOA,GPIO_Pin_0);//高电平熄灭
	//GPIO_ResetBits(GPIOA,GPIO_Pin_0);//低电平点亮
	//GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//通过改第三个参数将灯泡熄灭或点亮
	while(1)
	{
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
		Delay_ms(1000);//点亮持续1000ms
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
		Delay_ms(1000);//熄灭持续1000ms
	}
}

在面包板上的接线图如下:

通过stlink接口将该代码嵌入核心板上。

2.LED

### 关于蜂鸣器LED的硬件连接与控制方法 #### 1. **蜂鸣器的工作原理** 蜂鸣器分为无源蜂鸣器和有源蜂鸣器两种类型。对于STM32或其他单片机而言,通常采用的是有源蜂鸣器[^3]。有源蜂鸣器内部集成了震荡电路,只需提供固定的直流电压即可工作。而无源蜂鸣器则需要外部输入特定频率的方波才能发声。 在实际应用中,如果使用STM32作为控制器,则可以通过配置GPIO引脚输出高低电平或PWM信号来驱动蜂鸣器。例如,在某个时间间隔内使指定端口(如P25)周期性切换状态,从而形成脉冲信号并触发蜂鸣器发声[^2]。 #### 2. **LED的基本控制方式** LED是一种发光二极管器件,其基本特性决定了正向导通时会点亮。当利用微控制器比如STM32进行操作时,可以设置相应的IO口为推挽输出模式,并通过改变该引脚的状态(即逻辑0/1),达到开启关闭LED的目的[^1]。 具体来说,为了实现更复杂的效果如闪烁或者跑马灯现象,还需要借助延时函数配合循环结构完成定时翻转动作;而对于多盏串联排列起来构成阵列形式下的动态显示效果——流水灯,则需依次激活每颗独立的小灯珠按照预定顺序逐一亮灭下去直至回到起点重新开始新一轮过程为止。 以下是基于C语言编写的简单示例代码片段用于演示如何分别操控单一led以及多个按序列交替工作的场景: ```c // 定义端口号及初始化部分省略... void led_blink(void){ while (1) { GPIO_SetBits(GPIOA, GPIO_Pin_5); // 打开LED Delay_ms(500); GPIO_ResetBits(GPIOA, GPIO_Pin_5); // 关闭LED Delay_ms(500); } } void running_light(void){ uint8_t i; while (1) { for(i=0;i<NUM_LEDS;i++) { // NUM_LEDS表示总的LED数量 GPIO_SetBits(GPIO_PORT[i], GPIO_PIN[i]); Delay_ms(100); GPIO_ResetBits(GPIO_PORT[i], GPIO_PIN[i]); } } } ``` 上述两段伪码展示了基础版本下静态开关行为同级联式流动展示之间的差异之处所在。 #### 3. **硬件连线指导** 针对以上提到的各种情况下面给出具体的接线建议如下表所示: | 组件名称 | 单片机型号 | 连接到MCU上的Pin | |----------|------------------|--------------------| | LED | STM32F4xx系列 | PA5 | | Buzzer | STM32F103RCT6型号 | P25(PB5替代可能更好)| 注意事项: - 对于所有的外设都应该考虑加入限流电阻以保护原件免受过大电流损害. - 如果选用不同平台架构的产品务必查阅对应手册确认兼容性和确切针脚定义. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值