參考原子哥學習程序
條件:實驗板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.仿真無誤,下載運行。
附源碼: 實驗一流水燈