基於STM32從零寫作業系統系列---點亮LED燈

2020-11-21 電子工程世界

目的:

用彙編語言編寫一個點亮LED的程序,用於驗證前面章節中,下載.bin文件到晶片後,程序能否運行。


要求:

1.晶片手冊


2.開發板上有LED模塊


實驗步驟:

1.新建文件夾led_proj,複製bootloader_proj(參照本系列第3篇文章)文件夾中的所有文件到led_proj文件夾。


2.新建文件led.s,編寫代碼。代碼內容主要是使能GPIO口的時鐘,配置GPIO口,向GPIO口的輸出數據寄存器寫數據。


3.修改main.s文件,添加一條跳轉指令,修改死循環代碼。


4.修改makefile文件,在OBJ變量中添加led.o,如圖:


5..保存所有修改,在命令行中,進入led_proj文件夾,輸入make,編譯通過,如圖:

6.將boot.bin文件下載到晶片中,具體操作參照第2篇文章。


7.如無意外,可以看到8盞LED燈亮起來了。


小結

通過查找晶片手冊,了解到相關的寄存器的地址;通過設置相關寄存器,配置GPIO埠,使LED亮起來。

關鍵字:STM32  作業系統系列  點亮LED燈 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic474099.html 本網站轉載的所有的文章、圖片、音頻視頻文件等資料的版權歸版權所有人所有,本站採用的非本站原創文章及圖片等內容無法一一聯繫確認版權者。如果本網所選內容的文章作者及編輯認為其作品不宜公開自由傳播,或不應無償使用,請及時通過電子郵件或電話通知我們,以迅速採取適當措施,避免給雙方造成不必要的經濟損失。

推薦閱讀

STM32 DMA 應用之(一)SRAM 與flash 間數據傳輸

數據的形式,有幾種:1)字節;2)半字;3)全字 [1位元組=8bit 1半字=2位元組=16位 1全字=2半字=4位元組=32位]B.傳輸的最大數據量是65536我們來看一下stm32f103ve的數據手冊第九章DMA 大概的了解一下DMA的特性:四、怎樣配置軟體來使用DMA /****************************************************************/函數名稱: Dma_Init *功能描述: 利用DMA 把內存的數據 傳輸到flash 達到高速傳輸的目的 * *輸入參數:無 *返回值 :無 *其他說明:無 *當前版本:v1.0 *作者 :尹宣 *完成

發表於 2020-11-02

STM32 USB DFU設備固件升級 工程講解

說到STM32 USB的UDF,其實就是我們常說的IAP( In Application Programming )在應用編程。IAP有很多方法,我之前就用過串口IAP,網絡IAP。而這裡我們使用的是USB IAP,就是通過USB更新代碼。所以這裡有必要線了解IAP。IAP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運行過程中對User Flash的部分區域進行燒寫,目的是為了在產品發布後可以方便地通過預留的通信口對產品中的 固件 程序進行更新升級。通常在用戶需要實現IAP功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序不執行正常的功能

發表於 2020-11-02

STM32 USB DFU固件升級必讀

們的USB DFU工程裡我們設置Internal flash的編號為00,所以這裡就設置成0,然後點擊「General」保存.成dfu文件。  DfuSe Demostration使用說明當把USB DFU程序下載到開發板後,要按下按鍵使進入升級模式,這時DfuSe Demostration就會出現下面界面:  在軟體的左上方會出現「STM32 Device in DFU Mode」,接著在右上角的DFU Mode域會顯示USB設備的PID和VID,從圖中可以看出VID是0483,PID是DF11

發表於 2020-11-02

STM32, Flash DFU晶片,內部flash,代碼升級

這次要講講如何用USB升級單片機代碼。以前曾經做過串口升級,網絡升級,升級的基本原理都類似,只不過升級的工具不同罷了,串口升級當然是用串口了,網絡升級用的是TCP/IP,USB升級當然用的是USB了。下面就來講講USB升級的實現。修改部分部分都在USB_User組裡:STM32 Internal Flash DFU晶片內部flash代碼升級 - ziye334 - ziye334的博客我們一個一個文件講過來。首先講講hw_config.c,這個文件跟之前工程差不多。由於演示的需要,我們在這個文件裡初始化一個按鍵引腳,並定義按鍵讀取函數,該按鍵決定代碼是否升級,如果程序一開始,該按鍵按下,則進入升級模式,否則跳轉到升級程序代碼處

發表於 2020-11-02

STM32 USB工程的文件分析

先介紹下我參考其他工程而建立的STM32 USB工程:簡單介紹下:Startup當然放置STM32的啟動文件,CMSIS放置著STM32內核ARMCortex的內核文件,StdPeripheral_Driver目錄裡放置著STM32外設的庫函數,這幾個都是STM32工程必須的,這裡不仔細講訴,User Source裡放著自己的應用代碼,如main.c,stm32f10x_it.c等文件都放這裡。USB-FS-Driver_Driver下放著USB的庫,這裡暫時不講述,我重點想分析的文件在USB-User裡,這個目錄主要放著一些與USB庫和用戶相關的文件,起著USB庫與用戶之間的橋梁作用,文件如下圖所示,該目錄包含如下文件:接下去

發表於 2020-11-02

STM32的CustomHID的各描述符介紹

表示自供電,不支持遠程喚醒      D7:保留必須為1,D6:是否自供電,D5:是否支持遠程喚醒,D4~D0:保留設置為0*///    0x32,       /*從總線上獲得的最大電流為100mA */    0x96,         /*MaxPower:設備需要從總線上獲取多少電流,單位為2mA,0x96表示300mA*/    /**************  HID接口描述符****************/&nbsp

發表於 2020-10-30

相關焦點

  • 51單片機系列之2點亮第一個led燈
    點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。接下來就是如何編寫程序並燒錄到單片機中了。
  • 第3課: 點亮開發板led燈
    我們學習的是ARM周邊外設的控制,但外設有很多我們寫的程序分成2種:本文引用地址:http://www.eepw.com.cn/article/201611/316804.htm無作業系統的直接驅動有作業系統的寫出設備驅動以下介紹下主要的設備:1外部存儲控制器 發送複雜的時序信號來控制SDRAM,有了它就比較方便擴展
  • 單片機長用STM32點亮幾個LED燈
    >//LED3的控制引腳#define GPIO_LED3 GPIO_Pin_4//LED4的控制引腳#define GPIO_LED4 GPIO_Pin_7//全部4個LED燈的控制引腳
  • Led燈閃爍是什麼原因 led燈壞了怎麼維修
    led燈開的時候,會發出各種各色的光,非常的漂亮,許多人都忠愛led燈,那led燈閃爍是什麼原因,我們大家應該都會注意到,當我們把led燈關了之後,會發現led燈一閃一閃的,這是怎麼回事呢?led燈閃爍是什麼原因,許多人都對這個問題比較感興趣,led燈壞了怎麼維修,今天小編就為大家講講,一起學習吧!
  • STM32cubeMX 基於stm32的定時器實現定時1秒LED閃爍
    吧,外設庫開發不要太方便,哈哈哈先去 stm32 社區逛了逛,發現了一個新字眼 STM32CubeMX,簡單看了下,大概明白是個 ST 公司新推出的一個配置工具,直接由圖形界面簡單配置下,生成初始化代碼,並對外設做了進一步的抽象,讓開發人員更只專注應用的開發,挺不錯的樣子,下來玩玩。
  • Arduino基礎入門篇06——流動的LED燈
    上一篇介紹了Arduino數字I/O引腳及相關函數,並點亮了板載LED燈。本篇將使用麵包板搭建電路,多個LED燈配合顯示流動效果。1. 實驗材料Uno R3開發板配套USB數據線麵包板及配套連接線6個LED燈6個220Ω電阻2.
  • 一起學Arduino:點亮第一盞LED燈
    (模擬埠也一樣)2、點亮一盞LED燈學習程序語言第一個例子就是打個招呼:「hello world!」那麼學習Arduino Uno第一個例子就是點亮一盞LED燈!如果板子上的電源LED燈亮和另外有一顆LED燈在閃爍的話,你就不用怕怕了,說明板子正常,正在運行預載的BLINK例程,就是點亮一盞LED燈!(這顆LED燈就是D13口在板子上自帶的LED,廠家免費送的)現在我們學習外接LED燈,讓它一閃一閃的。LED燈很好,建議買一堆回來,包郵那種。如何分LED管腳?
  • stm32 啟動代碼 C語言實現 2
    這篇在上個基礎上,實實在在的去初始化一些硬體 首先就是系統的時鐘,然後我們點亮一個LED燈。之前還有一篇STM32 關於鍾源的介紹,。如圖在這種low_level 初始化的這個階段,我先用MSI作為系統的時鐘,並且配置為8Mhz。
  • 滷素燈和led燈的區別 滷素燈和led燈有什麼區別
    受經濟因素影響,現在的車主對於車的要求從最初的代步,到現在的節能、舒適、安全等一系列高要求,所以現在的廠商也在車上下了大功夫,燈就是其中之一,以前的滷素燈,大都換成了led燈,所以兩種燈有什麼不同呢?下面讓我們來看看滷素燈和led燈的區別吧。
  • led燈過亮怎麼降低亮度 led燈是什麼燈具
    燈具方面的一些情況多少人掌握的比較少,因為在於很多物品上,人們只要一開始在使用,之後都只會去使用,並不會做一些詳細的理解調查,但有時若遇到了問題,確實還得要在重新的理解,所以就不如一開始就弄明白一些狀況,這樣對自己也會有好處,那麼led燈過亮怎麼降低亮度?led燈是什麼燈具?
  • STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED燈
    我們的目的是控制開發板上板載的三個按鍵來操作開發板上板載的兩個LED燈實現亮或滅(按鍵第一次按下時燈亮,再按下時燈滅,以此類推)。LED燈了。比如兩個LED,硬體上,它們都是與高電平相連的,所以你把另一端設置為低電平的時候它們就被點亮,如果另一端設置為高電平,那麼它們就滅。另外IO口的模式也是從硬體連接上確定的。
  • 基於AC220V的LED球泡燈電路
    打開APP 基於AC220V的LED球泡燈電路 創意電子DIY分享 發表於 2020-04-28 17:44:59   工作電壓為AC220V的LED燈一般都是將多個LED燈珠串聯起來,然後通過恆流驅動電路點亮的,若直接將這種燈泡接在12V電源中,燈泡的恆流驅動電路無法在這麼低的電壓下工作,燈泡也就無法點亮。
  • 影響led燈壽命的因素是什麼呢?
    LED燈在最開始應用的時候,被用作那些使用時間補償,而且對壽命的要求也不是很高的照明用品上,例如led檯燈、led手電筒等等。       隨著時代的不斷發展,led燈具已經變得越來越受歡迎,如今被廣泛應用於室內照明和戶外照明,例如家居使用的led吸頂燈、led球泡燈、led射燈等等,戶外使用的led路燈、led投光燈、led洗牆燈等等,因此對led
  • LED球泡燈批發價格
    燈(LEDlamp)是什麼?你可能第一次想到的是頭上發光的前照燈,但是有更加優秀的說明-led燈是指使用LED作為光源的照明器具。那麼,發光二極體是什麼呢?這不重要,重要的是LED燈具有節能、長壽、環保、防震等優點,可以直接發出7種顏色的光,通常應用於信號、顯示器、汽車信號等領域,當然也包括城市照明、商用照明、辦公區域、生產現場等範圍。節能燈是什麼燈?
  • 不可思議:看LED燈如何顛覆你的「三觀」
    Aniel becker為quasar設計的迷你衛星吊燈,是基於十九世紀六十年代研究出來的衛星模型,由150個內置微型LED燈泡的茶燈組成的一個球形,金屬表面增加了折射和反射時的發光度。LED燈外觀模仿蟲子惟妙惟肖,並自成系列,看來設計師確實是對蟲子情有獨鍾。不過放這種獨特的LED燈在家裡,要小心嚇到那些見蟲子就會尖叫的朋友哦,你能看出來這款LED燈更像哪種蟲子嗎?
  • AMIRO化妝鏡O系列高清日光智能臺式桌面led帶燈
    AMIRO化妝鏡O系列高清日光智能臺式桌面led帶燈1/8
  • led燈與平米參照表 如何選購LED燈
    相信大家都知道是led燈,它安裝在每個家庭中的角落中,它不僅小巧精緻,而且光照顏色也非常好。今天小編給大家介紹下led燈與平米參照表,如何選購LED燈?接下來我們跟著小編一起來看看吧!一、led燈與平米參照表1、首先led燈型號,使用功率不同它的價格也有所不同,像led日光燈管它有14瓦,9瓦,led燈泡有3瓦,6瓦,射燈有6瓦,12瓦,16瓦等。而有的廠商生產出來的商品它在使用功率上也不一定。
  • 在你的樹莓派上點亮一顆LED吧
    引腳示意圖既然要點亮LED燈,那麼必須要清楚樹莓派的GPIO的分布情況,我們來看一下官方給出的引腳分布情況吧各個排針所對應的GPIO如下圖所示,黃色的代表是GPIO口,黃1代表GPIO1,黑色的是地,也就是我們平時所說的負極,黃色的為3.3V,紅色的為5V,白色的為擺設。
  • Arduino基礎入門篇07—按鍵控制LED燈
    前面介紹了Arduino數字I/O,通過控制數字引腳輸出來控制LED燈亮滅。本篇將介紹數字I/O的輸入功能,通過檢測按鍵狀態來控制LED燈亮滅,把LED的亮滅變成人為可控制的。1. 1 5 6int buttonPin = 2;  7int ledPin =  9;   8 9int buttonState = 0; 1011void setup() {12  pinMode(ledPin, OUTPUT);  13  pinMode(buttonPin, INPUT_PULLUP);