STM32的LED闪烁项目的心得体会

目录

项目简介

项目步骤

编译和下载代码

运行程序

熟悉STM32的开发环境和开发工具

总结


(21物联网应用技术2班-唐婷薇-20210320038)

项目简介

这个项目是基于STM32单片机的LED闪烁项目,主要目的是让学习者熟悉STM32的基本操作和编程方法。在这个项目中,我们将使用STM32作为控制器,通过对GPIO口的控制实现LED灯的闪烁。

STM32开发板的选择和购买

学好STM32还需要一个开发板,根据每人的需求开发板都不一样,我用的开发板是MINI+2.4寸的:

STM32的LED闪烁项目的心得体会_第1张图片

项目步骤

准备开发环境

在开始前,需要先搭建好STM32的开发环境,包括安装好开发软件Keil和USB转串口驱动程序,将STM32开发板通过USB线连接到电脑上。

配置GPIO口

在Keil中创建一个新的工程,在工程中添加STM32的头文件和库文件。

在代码中添加如下代码:

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure;
#define LED1_ON GPIO_SetBits(GPIOB, GPIO_Pin_5);  
#define LED1_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5); 

#define LED2_ON GPIO_SetBits(GPIOD, GPIO_Pin_6);  
#define LED2_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_6); 

#define LED3_ON GPIO_SetBits(GPIOD, GPIO_Pin_3);  
#define LED3_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_3);  

void RCC_Configuration(void);
void LED_Config(void);
void Delay(__IO uint32_t nCount);

LED灯的亮灭

LED 控制初始化函数。

在代码中添加如下代码:

void LED_Config(void){
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD , ENABLE);	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				     //LED1  V6	   //将V6,V7,V8 配置为通用推挽输出  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //口线翻转速度为50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);					 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_3;		 //LED2, LED3	 V7 V8
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}
  • 第1行代码使用STM32的库函数,打开GPIOB和GPIOD的时钟。
  • 接下来的代码用于将引脚GPIOB Pin5配置为输出模式,并设置为推挽输出,即将输出电平拉高或拉低的时候,需要消耗一定的电流。同时还设置了GPIOB Pin5的翻转速度为50MHz。
  • 然后,代码将引脚GPIOD Pin6和Pin3也配置为输出模式,并设置为推挽输出;并且使用相同的GPIO_InitStructure变量进行初始化。
  • 最后,调用函数GPIO_Init对GPIOB Pin5、GPIOD Pin6和GPIOD Pin3进行初始化,使其可以驱动LED灯的亮灭。

主函数

在代码中添加如下代码:

int main(void)
{
  RCC_Configuration();   				//系统时钟配置
  LED_Config();							//LED控制配置
  while (1)
  {
  	LED1_ON; LED2_OFF; LED3_OFF;		//LED1亮  LED2,LED3灭(LED2,LED3 仅V3,V2,V2.1板有)
    Delay(0xAFFFF);
	LED1_OFF; LED2_ON; LED3_OFF;		//LED2亮  LED1,LED3灭(LED2,LED3 仅V3,V2,V2.1板有)
	Delay(0xAFFFF);
	LED1_OFF; LED2_OFF; LED3_ON;		//LED3亮  LED1,LED2灭(LED2,LED3 仅V3,V2,V2.1板有)
	Delay(0xAFFFF);    
  }
}

系统时钟配置为72MHZ。

在代码中添加如下代码:

void RCC_Configuration(void)
{   
  SystemInit();
}

SystemInit是一个函数,它是由CMSIS(Cortex Microcontroller Software Interface Standard)定义的,其作用是初始化芯片的系统时钟和Flash存储器的读取时间。因此,RCC_Configuration函数的主要目的是对系统时钟和Flash进行初始化配置,以确保代码的正确运行。

延时函数。

在代码中添加如下代码:

void Delay(__IO uint32_t nCount)
{
   for(; nCount != 0; nCount--);
}

这段代码是一个简单的延时函数,它使用了一个for循环来实现延时。函数的参数nCount是一个32位的无符号整数,表示需要延时的时钟数。在函数内部使用了一个for循环,每次循环nCount自减1,直到nCount减为0时循环结束,从而实现了延时的功能。注意,这种方法是一个非常简单且不精确的延时方法,并且也容易受到系统中断和调度的影响,因此在实际应用中可能需要使用更加精确和可靠的延时方法。

编译和下载代码

在编写好代码之后,我们需要将代码进行编译,并下载到STM32开发板上。在Keil中,选择Build选项进行编译,编译成功后选择Download选项下载代码。

运行程序

下载成功后,将STM32开发板断开电源,然后重新连接电源,程序就会开始运行。此时,我们可以看到LED灯的间隔闪烁。

在STM32课程中,LED闪烁的项目是一个比较基础的项目,对于初学者来说是一个很好的入门项目。通过这个项目,可以初步了解STM32的基本使用方法和流程,以及简单的编程语法和程序结构。


熟悉STM32的开发环境和开发工具

了解如何安装和配置Keil等工具,以及如何创建和编译工程。
掌握基本的STM32编程语法和程序结构:了解如何使用C语言编写STM32程序,掌握基本的程序结构、变量类型、数据类型、运算符、控制流等语法和语句。
理解LED闪烁的基本原理:了解LED的电路原理,以及如何通过STM32的GPIO口来控制LED的亮灭,以及如何使用延迟函数控制LED的闪烁。
熟悉STM32的GPIO口和定时器:了解如何使用STM32的GPIO口来控制LED的亮灭,以及如何使用定时器来控制LED的闪烁。
学习和练习调试STM32程序:学会如何使用调试工具来调试STM32程序,如如何设置断点、观察变量的值等。
养成良好的编程习惯:写注释、命名规范、代码风格等都是良好的编程习惯,能够帮助我们更好地组织和维护程序。
总之,通过这个基础的LED闪烁项目,可以帮助我们初步了解STM32的开发环境和开发工具,掌握基本的STM32编程语法和程序结构,理解LED闪烁的基本原理,熟悉STM32的GPIO口和定时器等模块,以及学习和练习调试STM32程序等方面的基础知识和技能。

总结

这个STM32 LED闪烁的项目是一个非常简单的入门项目,但它可以帮助学习者熟悉STM32的编程方法和GPIO口的使用。在这个项目中,我们通过对GPIO口的控制实现了LED灯的闪烁。

LED闪烁是STM32入门课程的基础操作之一,它旨在教学生如何使用STM32开发板控制LED灯的闪烁。在这个过程中,学生将学到如何使用STM32的GPIO(通用输入输出)接口和基本编程语言来实现这一目标。

学生需要掌握一些基本的硬件和软件知识,例如如何连接电路,如何下载和调试代码等等。学生还需要熟悉一些编程语言(如C语言)和STM32开发板的开发环境(如Keil)。

最后,我建议学生在学习STM32课程的LED闪烁过程中保持耐心和动手实践。这是一项需要较长时间的学习过程,学生需要不断地尝试和调试代码,直到成功闪烁LED。如果遇到问题,可以查看相关的教程和文档。

总之,STM32课程的LED闪烁是一项基础操作,但它对于学生打好STM32开发的基础非常重要。通过这个过程,学生可以掌握一些基本的硬件和软件知识,同时也能够提高自己的编程能力和解决问题的能力。

你可能感兴趣的:(单片机,stm32,嵌入式硬件)