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

参考原子哥学习程序

条件:实验板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.cnblogs.com/wangguchao/p/7296274.html