STM32F103 流水灯实现教程

        在嵌入式开发中,流水灯是一个非常基础且经典的实验项目。通过这个项目,我们可以初步了解 STM32 的 GPIO 配置和编程方法。本文将详细介绍如何在 STM32F103 微控制器上实现流水灯功能。

        

一、硬件准备

  1. STM32F103 开发板一块。
  2. 若干个 LED 灯。
  3. 杜邦线若干。

二、软件准备

  1. Keil μVision 开发环境。
  2. STM32F103 的标准库或 HAL 库。

三、原理分析

        流水灯的实现主要是通过控制 STM32 的 GPIO 引脚输出高低电平,从而控制 LED 灯的亮灭。通过依次改变不同 GPIO 引脚的输出状态,就可以实现 LED 灯依次点亮的效果,即流水灯效果。

四、实现步骤

(一)创建项目

  1. 打开 Keil μVision 开发环境,创建一个新的 STM32 项目。
  2. 选择正确的芯片型号为 STM32F103。

(二)配置 GPIO

  1. 打开项目的工程文件,找到并打开 stm32f10x.h 文件,确保已经包含了正确的芯片头文件。
  2. 在 stm32f10x_conf.h 文件中,取消注释需要使用的外设库的头文件,例如 #include "stm32f10x_gpio.h"
  3. 配置 GPIO 引脚为输出模式。可以使用以下代码示例:

 

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

        在上述代码中,首先使能了 GPIOA 的时钟,然后将 GPIOA 的引脚 0、1、2、3 配置为推挽输出模式,速度为 50MHz。

(三)实现流水灯效果

  1. 在主函数中,编写一个循环,依次将不同的 GPIO 引脚设置为高电平,其他引脚设置为低电平,从而实现流水灯效果。以下是示例代码:
    int main(void)
    {
        while (1)
        {
            GPIO_SetBits(GPIOA, GPIO_Pin_0);
            GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
            delay_ms(500);
            GPIO_SetBits(GPIOA, GPIO_Pin_1);
            GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_3);
            delay_ms(500);
            GPIO_SetBits(GPIOA, GPIO_Pin_2);
            GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3);
            delay_ms(500);
            GPIO_SetBits(GPIOA, GPIO_Pin_3);
            GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
            delay_ms(500);
        }
    }

  2. 为了实现延时效果,可以编写一个简单的延时函数,例如:
    void delay_ms(uint32_t ms)
    {
        uint32_t i, j;
        for (i = 0; i < ms; i++)
        {
            for (j = 0; j < 1130; j++)
                ;
        }
    }

    五、总结

     

           通过以上步骤,我们成功地在 STM32F103 微控制器上实现了流水灯功能。这个项目虽然简单,但它为我们进一步学习 STM32 的其他功能打下了基础。在实际应用中,可以根据需要调整 LED 灯的数量和闪烁模式,以满足不同的需求。

     

           希望这篇博客对你在 STM32F103 上实现流水灯有所帮助!如有任何问题或建议,欢迎在评论区留言。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值