目录
项目简介
项目步骤
编译和下载代码
运行程序
熟悉STM32的开发环境和开发工具
总结
(21物联网应用技术2班-唐婷薇-20210320038)
这个项目是基于STM32单片机的LED闪烁项目,主要目的是让学习者熟悉STM32的基本操作和编程方法。在这个项目中,我们将使用STM32作为控制器,通过对GPIO口的控制实现LED灯的闪烁。
学好STM32还需要一个开发板,根据每人的需求开发板都不一样,我用的开发板是MINI+2.4寸的:
在开始前,需要先搭建好STM32的开发环境,包括安装好开发软件Keil和USB转串口驱动程序,将STM32开发板通过USB线连接到电脑上。
在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);
}
主函数
在代码中添加如下代码:
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的基本使用方法和流程,以及简单的编程语法和程序结构。
了解如何安装和配置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开发的基础非常重要。通过这个过程,学生可以掌握一些基本的硬件和软件知识,同时也能够提高自己的编程能力和解决问题的能力。