實驗一:基於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.仿真無誤,下載運行。

   附源碼:        實驗一流水燈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM