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

xiaoxiao2021-02-28  72

条件:实验板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(1) { LED0=0; LED1=1; delay_ms(300); LED0=1; LED1=0; delay_ms(300); } }

 

 

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

附源程序:  实验一流水灯

转载请注明原文地址: https://www.6miu.com/read-67413.html

最新回复(0)