實驗目的:
讓我的開發板的led燈亮滅閃爍
實驗程式:
/*******************************led.c*********************************/
#include "stm32f4xx.h" //在system目錄下可以找到,把st官方的部分庫抽取出來,組成了乙個system目錄
#include "sys.h"
void led_init(void)
/********************************led.h********************************/
#ifndef _led_h
#define _led_h
void led_init(void);
#endif
/********************************test.c********************************/
#include "sys.h"
#include "delay.h"
#include "led.h"
int main(void)
}
實驗分析:1.在以後的每個實驗中,我們都會用到了st官方提供的啟動檔案:startup_stm32f40_41***.s
這個檔案的作用就是設定棧等一系列,然後轉去執行我們test.c中的main函式。這樣我們就不用
手動再去寫這樣乙個啟動檔案了。
2.在main函式中,我們用到了stm32_clock_init()和delay_init()函式,這兩個函式是通過暫存器的配置來完成的。
stm32_clock_init()裡邊是進行了一些系統時鐘的設定。delay_init()函式的作用是初始化延遲函式,方便下邊,
我們後邊直接呼叫delay_ms()函式來完成延遲的功能,這些都是封裝好了的,方便我們直接呼叫。在這個工程中,
我們把一些封裝了的東西統一放在了system目錄下,仔細檢視,會發現其實其底層的操作與arm9操作類似。
3.在stm32中,我們操作硬體有兩種方法:
第一種是通過st官方提供的庫函式來操作
第二種是通過操作暫存器來達到我們的目的
其實話說回來,st官方提供的庫函式,進去裡邊看,我們實際也可以看到,
其只是封裝了一層,其本質也是操作暫存器,只是直接方便使用者呼叫,方便快捷,
但是在學習階段,個人建議還是操作暫存器。暫存器會了,原理你也就懂了,然後操作
庫函式只是分分鐘的事。
4.cortex m4 的 gpio的基本機構
5.推挽輸出和開漏輸出
推挽輸出:可以輸出強高低電平;
開漏輸出:只可以輸出強低電平,高電平得靠外部電阻拉高;
注意事項:
1.在操作gpio等外設時,首先要做的一步是使能你對應要操作的外設的時鐘,
這一點與arm9有一定的區別。
2.在設定gpio為推挽上拉輸出時,其預設電平那麼就是高電平,但是若不在led_init()中,
強制將引腳拉高,那麼led燈還是會亮(會亮說明此引腳預設為低),這點沒大想明白。
小結 stm32 驅動LED燈
使用位帶操作,位帶操作就是把每個位元膨脹成乙個32位的字,當訪問這些字的時候就訪問這些位元位。然後,埠使能 pb5 pe5 led io void led init void gpio setbits gpiob,gpio pin 5 這個必須要寫,取位址。gpio setbits gpiob,gp...
stm32實現LED燈亮滅
wangxl 20180808 本章中,不特殊說明都以st m32f103 vet6 為例,軟體平台為 iar6.4 通過檢視原理圖,我們的 led指示燈配置在pb8 pb9管腳上,通過配置 gpiob時鐘及引腳 來控制指示燈的亮滅。學會檢視原理圖 理解stm32埠配置 學會操作使用 iar程式設計...
STM32 點燈實驗
2018 3 29 stm32 1.說在前面 在配置完template之後,今天算是正式進入了stm32的世界,初步了解stm32有著浩如煙海的資料和庫函式,所以,學習32程式設計有著兩種方向,第一是建立在操作庫函式的基礎上,第二是建立在操作暫存器的基礎上 實際上,庫函式就是封裝了一些對暫存器的用法...