stm32實現LED燈亮滅

2021-08-22 13:03:01 字數 3540 閱讀 2764

wangxl@20180808

本章中,

不特殊說明都以st

m32f103

vet6

為例,軟體平台為

iar6.4

通過檢視原理圖,我們的

led指示燈配置在pb8、pb9管腳上,

通過配置

gpiob時鐘及引腳

來控制指示燈的亮滅。

學會檢視原理圖

理解stm32埠配置

學會操作使用

iar程式設計工具

1.配置開啟gpio時鐘

stm32上電時外設時鐘預設不開啟

,用要時需要先

開啟時鐘,本例開啟

gpioa和

gpiob

的時鐘。 

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable);

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);

2.設定gpio輸出模式

stm32f1提供了4種輸出模式

(推挽輸出

、開漏輸出 

、復用推挽輸出 

、復用開漏輸出

)和3種輸出速度

;一般配置led採用

推挽輸出;

/*pb8,out*/

gpio_inittypedef gpio_initstructure;

gpio_initstructure.gpio_pin = gpio_pin_8;

gpio_initstructure.gpio_mode = gpio_mode_out_pp;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_init(gpiob, &gpio_initstructure);

3、控制led燈

參考原理圖,

可以看出點亮led燈需要io口輸出低電平

; led亮(設低電平)

gpio_resetbits(gpiob, gpio_pin_8)       

led滅(設高電平)

gpio_setbits(gpiob, gpio_pin_8)  

1、開啟led

目錄/檔案 說明

/led

包含專案、工程檔案、除錯資訊等(.eww  .ewp)

|-debug

包含除錯目錄

|-debug/exe

包含配置生成的.hex或.bin檔案

|-debug/obj

包含.o編譯檔案

/startup

包含啟動檔案

startup_stm32f10x_hd.s

啟動檔案

/user u

ser層目錄

應用相關

main主程式

|-com

串列埠相關

配置串列埠呼叫程式

|-sys

系統相關

|-sys/stm32f10x_it.c

編寫中斷程式

|-sys/rcc

設定系統時鐘和匯流排時鐘

|-sys/delay.c

配置延時呼叫函式

|-sys/nvic.c

配置nvic中斷

../librariesm3 m3

庫目錄

|-cmsis

cmsis核心層

cmsis\core\cm3\stm32f10x.h

暫存器位址和結構體型別的定義

|stm32f10x_stdperiph_driver

stm32f

10x系列

驅動檔案包

|-stm32v3.1.0.a s

tm32v3.1庫檔案

1、startup_stm32f10x_hd.s(啟動檔案)

檔案描述:

該檔案作為啟動時執行的第一步,這個檔案中有一段啟動**。

**工作流程:

(1) 初始化sp;

(2)  初始化pc指標 --- 指向iar_program_start

(3)  設定中斷向量表各exception的位址

(4)  全域性變數清零

(5)  轉向c語言的main函式

system_stm32f10x.c(系統配置)

檔案描述:

system_stm32f10x.c裡的函式的功能是完成系統時鐘的配置,通過rcc.c呼叫system_stm32f10x.c內部的systeminit的函式,進行系統時鐘的初始化;

3、nvic.c(中斷配置程式)

檔案描述:

配置使能系統中斷程式檔案,本例中主要配置使能usart1串列埠接收中斷;

3.1 nvic_configuration()

呼叫該函式主要設定中斷允許及中斷優先順序;

函式原型:

void nvic_configuration(void);

引數:(無)

返回值:(無)

4、rcc.c(配置系統時鐘程式)

檔案描述:

配置使能系統時鐘程式檔案,本例中主要配置系統時鐘頻率設為72mhz;主要呼叫system_stm32f10x.c內部的systeminit的函式,進行系統時鐘的初始化;

4.1 rcc_configuration()

呼叫該函式主要設定中斷允許及中斷優先順序;

函式原型:

void rcc_configurationvoid);

引數:(無)

返回值:(無)

5、bsp.c(板載驅動程式)

檔案描述:

初始化所有的硬體裝置;

5.1 bsp_init()

呼叫該函式主要配置時鐘,初始化所有的硬體裝置。該函式配置cpu暫存器和外設的暫存器並初始化一些全域性變數。只需要呼叫一次;

函式原型:

void bsp_init(void);

引數:(無)

返回值:(無)

6、main.c(主程式)

檔案描述:

初始化全域性變數,配置時鐘,初始化所有的硬體裝置,定時每秒切換執行led指示燈。

**工作流程:

int main(void)

}

STM32入門程式 LED燈亮滅

學習stm32的入門課程,從點亮和熄滅led小燈做起。本次實驗使用stm32f103rc的晶元,其中led1接到stm32晶元的pa8引腳,led2接到stm32晶元的pb15引腳,如下圖 led小燈的電路暫不上傳,其中pa8和pb15為低電平的時候,led1和led2燈點亮 高電平的時候,led1...

STM32的LED燈實驗

實驗目的 讓我的開發板的led燈亮滅閃爍 實驗程式 led.c include stm32f4xx.h 在system目錄下可以找到,把st官方的部分庫抽取出來,組成了乙個system目錄 include sys.h void led init void led.h ifndef led h def...

小結 stm32 驅動LED燈

使用位帶操作,位帶操作就是把每個位元膨脹成乙個32位的字,當訪問這些字的時候就訪問這些位元位。然後,埠使能 pb5 pe5 led io void led init void gpio setbits gpiob,gpio pin 5 這個必須要寫,取位址。gpio setbits gpiob,gp...