实验一:基于STM32F1的流水灯实验(库函数)

2023-05-12,,

参考原子哥学习程序

条件:实验板STM32103ZET6;固件库STM32F10x_StdPeriph_Lib_V3.5.0;环境MDK5;

目的:了解STM32 的 IO 口如何作为输出使用 ;以两个LED灯交替闪烁为目标。

目录:

1.新建工程
2.硬件连接
3.R软件设计
3.1test1.c程序
3.2 test.h头文件
3.3 main.c主函数
4.仿真下载

1.新建工程(简单介绍)

新建文件夹“实验一 流水灯”,里面建6个文件夹:CORE ,FWLib,HARDWARE,OBJ,SYSTEM,USER 。并在HARDWARE文件夹下新建文件夹LED。

从固件库选择文件考入上诉文件夹(其中SYSTEM中三个系统文件来自原子哥)。

MDK下新建工程test1,,将添加好文件的文件夹加载到工程中,并添加头文件路径和宏定义:STM32F10X_HD,USE_STDPERIPH_DRIVER。

2.硬件连接

LED0接PA0,LED1接PB1。

3.软件设计

需要编写只有HARDWARE下的test1.c与test1.h两个文件,以及主函数。

 3.1test1.c程序主要为了配置端口。程序如下:

#include "test1.h"

void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //PA、PB时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化
GPIO_SetBits(GPIOA,GPIO_Pin_0); //PA.0输出高 //PB.1配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_1); }

注:GPIO_SetBits即将对应的IO口置1

GPIO_ResetBits则为置0

3.2 test.h头文件为了定义端口。程序如下:

#ifndef __LED_H
#define __LED_H #include "sys.h" #define LED0 PAout(0) // PA0
#define LED1 PBout(1) // PB1
void LED_Init(void); //初始化 #endif

 3.3 main.c主函数初始化端口,循环执行。程序如下:

#include "test1.h"
#include "delay.h"
#include "sys.h" int main(void)
{ delay_init();
LED_Init(); //死循环
while()
{ LED0=;
LED1=;
delay_ms();
LED0=;
LED1=;
delay_ms();
}
}

4.仿真无误,下载运行。

   附源码:        实验一流水灯

实验一:基于STM32F1的流水灯实验(库函数)的相关教程结束。

《实验一:基于STM32F1的流水灯实验(库函数).doc》

下载本文的Word格式文档,以方便收藏与打印。