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...