STM32F103是STM32系列中非常经典的一款。LED闪烁实验主要目的是让初学者熟悉单片机的基本开发流程和编程方法。
原理:
LED灯本身是一种发光二极管,可以发出不同颜色的光。它具有极性,正极连接电源,负极接地时可以发光。我们通过stm32的GPIO口输出高低电平来控制LED的亮灭。
stm32的GPIO可配置为推挽输出。当输出高电平(1)时,端口输出与电源电压相同的电平,此时LED灯导通发光。当输出低电平(0)时,端口输出接地,LED灯截止熄灭。
通过循环改变GPIO的输出电平,我们可以反复让LED灯在点亮和熄灭之间切换,由于人眼的视觉残留效应,会产生视觉上的闪烁效果。为了避免LED频繁点亮熄灭对硬件的影响,我们在改变GPIO输出状态之间添加一定的延时,这样可以很容易地用代码方式实现LED的闪烁,这是stm32控制外设的一个典型案例。
实验主要步骤:
硬件电路连接
使用面包板进行接线,将LED灯、限流电阻连接到STM32F103开发板的GPIO口(以PB1作为实例),再连接好电源。这个电路非常简单,主要起到演示和验证的作用。
软件设计
我们可以使用基于Eclipse的STM32CubeIDE进行开发。首先需要配置工程选项,包括目标MCU型号STM32F103、时钟设置等参数。然后编写主函数,实现LED闪烁控制逻辑。
/* 定义LED连接的GPIO端口和引脚 */
#define LED_PIN GPIO_Pin_1
#define LED_PORT GPIOB
int main(void)
{
/* 初始化LED相关GPIO */
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Init(LED_PORT, &GPIO_InitStruct);
while (1) {
/* LED灯亮 */
GPIO_SetBits(LED_PORT, LED_PIN);
/* 延时函数 */
Delay(500);
/* LED灯灭 */
GPIO_ResetBits(LED_PORT, LED_PIN);
/* 延时函数 */
Delay(500);
}
}
上面是基于STM32F103的主要控制代码。通过设置GPIO电平来控制LED的亮灭,实现闪烁效果。代码中对具体的MCU型号相关内容(如GPIO端口定义)做了指定。
程序调试
编写完代码后,可以直接在开发板上调试运行,验证LED闪烁效果。
我这里分享一个包含150G学习资料的免费资料包,里面包含的学习内容、面试经验和项目实例都是比较新的和全面的https://m.hqyjai.net/emb_study_blue_short.html?xt=lwf