91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從原理圖PCB到移植RTOS是怎么一回事

wFVr_Hardware_1 ? 來源:ct ? 2019-08-20 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【前言】

iBox相關(guān)教材推出以來,不少朋友還希望針對軟件開發(fā)進行細致講解。

為此,我們將陸續(xù)針對iBox的STM32物聯(lián)網(wǎng)開發(fā)的一些細節(jié),進行分享。

今天是第一章節(jié),我們介紹一下如何移植標準的官網(wǎng)代碼(裸機,無OS)到iBox開發(fā)板上,控制LED閃爍。如此簡單的試驗,還是希望給你不一樣的體驗。

【一、安裝編譯工具Keil

1、為什么選擇keil

在這個操作之前,原本應(yīng)該解釋為什么選擇“Cortex-M”,為什么選擇“M3”、為什么選擇“ST”。這樣容易扯遠了。所以簡單說下,原因無非以下幾個維度:

1、成本

2、功耗

3、開發(fā)工作量

4、生態(tài)

5、易學性、普及度

至于為什么選擇Keil 沒選擇 IAR、GCC,是因為配置簡單。從支持的芯片的豐富度來說,IAR是不錯的選擇。對于熟練工來說,工具的差異不大;如同硬件熟練工一樣,繪圖工具差異不大。

KEIL和IAR Systems都是嵌入式領(lǐng)域系統(tǒng)開發(fā)工具和服務(wù)商(IDE)的供應(yīng)商,前者成立于-1986年,總部在德國(如今已被大名鼎鼎的英國ARM公司收購);后者于成立1983年,公司總部位于北歐的瑞典。

二者的最著名的產(chǎn)品分別是KEIL uVision IDE和IAR Embeded Workbench。

估計大部分的開發(fā)人員都用過。因為他們都可以很好的支持各種不同版本的MCU。對于不同的開發(fā)環(huán)境,用久了,便會日久生情。用得順不順手,快不快樂,或喜歡,或討厭等等,都因人而異的。然而我們不能不考慮這個問題:能選擇到最適合自己,更有效率的工具,才是最好的。

KEIL的IDE界面比較通俗易懂,屬于平易近人的那種。

IAR呢,界面簡潔明了,整體感覺——專業(yè)。入門不易,一旦入門還是盡在掌握的感覺。

我們選擇的KEIL版本是

2、下載安裝包

鏈接:https://pan.baidu.com/s/1u955P7trvFYMOAghlj0Y2w 密碼:y4gy

百度網(wǎng)盤自從“360網(wǎng)盤”停用,就開始限速。

所以我們可以使用其他不限速的下載工具進行下載。

將上面的內(nèi)容存到自己的網(wǎng)盤,然后用下面這個工具進行下載。

pandownload 工具下載地址:

http://pandownload.com/

3、安裝

下載的壓縮包分成三個part,全部下載完成之后解壓縮,文件夾中有五個文件。

先安裝MDK523這個737MB的安裝包,然后安裝MDKCM523的安裝包。

安裝過程沒有注意點,一路NEXT。

安裝完成之后,點擊菜單Project之Manage,選擇Pack Install

Pack Installer窗口打開之后,選擇File菜單之 Import,然后選擇導入剛剛下載的三個PACK后綴名的文件。

4、破解

安裝完成后,只剩下破解了。

破解工具只用于學習交流,不用于商業(yè)用途。

http://www.hw100k.com/forum.php?mod=viewthread&tid=3506&extra=

破解統(tǒng)共分7步

1、點擊菜單Flie ->License management 獲取CID

2、CID復(fù)制到破解工具中。

3、選擇Target 為ARM

4、點擊Generate按鈕生成序列號

5、復(fù)制序列號

6、粘貼到LIC空格中

7點擊ADD LIC

完成破解。

重要,破解時,運行keil,需要用管理員身份運行。

如果你沒有破解,就急急忙忙運行工程,試圖編譯,則給你一個error,提示如下:

Check that your license details are correct in the License Management dialog of MDK. Additional information is available at:

http://www.keil.com/support/man/docs/license/license_management.htm

至此,安裝破解完成。

安裝好之后,我們就可以拿出我們的開發(fā)板硬件iBox了。

【二、下載和使用ST官方源代碼】

我們學習的過程,最好要學習使用官方的源碼。其他開發(fā)板的代碼,建議都只作為參考。因為每個人有每個人的編碼習慣,可能一些差異。

不同公司對代碼規(guī)范、代碼結(jié)構(gòu)的要求會有不同。

所以,我們從官方代碼作為開始。按照自己公司的要求,和自己能夠理解的習慣進行編碼,在實踐中提升。

總之,對代碼還是要盡在掌握,熟練駕馭、不能囫圇吞棗。

1、MCU

簡單介紹一下我們的 iBox物聯(lián)網(wǎng)開發(fā)板的硬件系統(tǒng):

核心芯片是STM32F103ZET6

原理圖pdf下載地址:

http://www.hw100k.com/forum.php?mod=viewthread&tid=3501&extra=page%3D1

2、使用 ST 官網(wǎng)

如果你很熟悉,可以跳過這個章節(jié)。但是根據(jù)本人觀察,很多長期使用STM32的工程師其實沒有仔細看過官網(wǎng)。

https://www.st.com 進入之后,我們進入Tool&Software去下載STM32標準庫

嵌入式軟件頁面之后,可以看到左下角 For STM32 MCUs

提醒:如果你沒有注冊、可以注冊賬號后登陸。下載代碼,需要登陸之后才可以下載。

進入之后,在頁面最下面,有個“Download”。點擊之后,可以下載。

點擊“Download”之后,下載一個壓縮包。

文件名為:en.stsw-stm32054.zip

解壓縮之后,文件夾名稱:STM32F10x_StdPeriph_Lib_V3.5.0

你也可以用下面鏈接粘貼到瀏覽器,直接下載:

https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries.html?querycriteria=productId=LN1939%20

選擇你對應(yīng)的MCU類別,比如我們iBox選擇F1

現(xiàn)在我們就已經(jīng)下載下來一個完整的STM32的官方標準外設(shè)庫文件包。

我們現(xiàn)在直接進入MDK-ARM文件夾,打開Keil的工程。

文件目錄如下:

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\MDK-ARM

雙擊打開。

我們可以嘗試一下編譯(Build)和下載程序(Download)

當我們電機 Download那個圖標時,我們發(fā)現(xiàn)下載不了,找不到你的下載工具。

3、使用Jlink進行代碼燒寫

那么,我們需要做幾個準備工作,才可以進行代碼燒寫:

1、把Jlink連上

2、安裝Jlink

3、配置芯片等燒寫環(huán)境

1、看圖

2、首先我們安裝Jlink

下載安裝包,下載地址如下:

http://www.hw100k.com/forum.php?mod=viewthread&tid=3507&extra=

安裝注意事項:無;一路 next

測試一下,我們的工具是否可以連接上我們的MCU

點擊開始菜單:SEGGER- Jlink-FLASH

打開JLINK軟件,它可能會提示建了工程,隨便建立一個就行

打開配置頁面,點擊Options->Project settings,會進入到配置頁面

配置頁面如下圖所示,下面進行選擇單片機

點擊CPU,選擇STM32單片機

點擊Target Connect 將JLINK和目標板進行連接。

如果連接成功,說明單片機和Jlink燒寫器都是好的,驅(qū)動也安裝成功啦。

然后我們可以嘗試用Keil5里面的Download試下,應(yīng)該可以少寫了。

(至于用J-Flash如何燒寫,按下不表)

3、先別急,我們需要配置芯片,讓編譯工具和電腦知道我們電路板上面芯片的型號。

選擇Flash里面的Configure Flash Tools

我們需要在Device里面選擇我們的芯片型號,如下:

選擇Debug 選擇Jlink

選擇Utilities,選擇Jlink

點擊Debug里面的 右邊的Settings

選擇Debug里面的Port 修改JTAG為 SW

現(xiàn)在,我們就可以下載啦。

4、修改源碼,實現(xiàn)閃燈

4.1刪除不需要的功能

至此,我們并沒有關(guān)心官方的源碼到底寫了什么內(nèi)容。

那么我們看下main函數(shù)

這個工程是基于STM32 官方的EVM板,這套代碼為了支持4套開發(fā)板,所以做了4組宏定義,選擇。我們在此暫時忽略。

我們將UART、LCD等于我們實驗?zāi)康臒o關(guān)的代碼刪除,則,只保留兩段代碼,如下,一段是LEDInit、一段是LEDOn

我們根據(jù)函數(shù)的定義,可以顧名思議:LEDInit是LED初始化,LEDOn是LED點亮。

4.2 研究 一下LED相關(guān)的函數(shù)和變量

我們研究一下這STM_EVAL_LEDInit() LED初始化函數(shù)

鼠標放在這個函數(shù)上面,右鍵選擇 跳轉(zhuǎn)到 “STM_EVAL_LEDInit”

跳轉(zhuǎn)過去之后,我們可以看到這個就是一個標準的GPIO初始化的函數(shù)。

我們?nèi)ゲ榭匆幌逻@幾個數(shù)組,是如何定義的。

由此,我們可以看到,在原始代碼里面定義了四個LED的控制GPIO,分別是:

F6、F7、F8、F9

我們查看一下原理圖,看看iBox上面的控制LED的GPIO分別是哪幾個。

iBox上面一共有四個LED,紅色LED是電源指示燈,不能用GPIO控制。

我們可以看下原理圖:

紅色LED的正極接3V3,負極通過一個電阻接GND。

另外三個顏色的燈分別接到GPIO進行控制。

通過查閱MCU的管腳連接,我們可以看到

PE9控制綠燈

PE10控制黃燈

PE12控制白燈

我們可以修改代碼里面LED1、LED2、LED3的管腳號,對我們電路板上的LED控制GPIO進行控制。

將上面的LED1的幾個值修改為:

GPIOE

GPIO_Pin_9

RCC_APB2Periph_GPIOE

同樣方法,我們修改LED2、LED3

修改完成之后,我們的初始、以及對LED進行控制的代碼,就是我們iBox電路板上面的幾個LED對應(yīng)的管腳了。

研究完初始化代碼之后,我們研究一下

STM_EVAL_LEDOn函數(shù),我們用右鍵跳轉(zhuǎn)的方式,查看函數(shù)定義。

STM32的每個GPIO端口都有兩個特別的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通過這兩個寄存器可以直接對對應(yīng)的GPIOx端口置'1'或置'0'。

GPIOx_BSRR的高16位中每一位對應(yīng)端口x的每個位,對高16位中的某位置'1'則端口x的對應(yīng)位被清'0';寄存器中的位置'0',則對它對應(yīng)的位不起作用。

GPIOx_BSRR的低16位中每一位也對應(yīng)端口x的每個位,對低16位中的某位置'1'則它對應(yīng)的端口位被置'1';寄存器中的位置'0',則對它對應(yīng)的端口不起作用。

此處,我們先簡單理解:

比如希望快速地對GPIOE的位7進行翻轉(zhuǎn),則可以:

GPIOE->BSRR = 0x80; // 置'1'

GPIOE->BRR = 0x80; // 置'0'

庫文件里面已經(jīng)對各個管腳進行了二進制的對應(yīng)位進行了定義。

所以,我們想讓GPIO為低,則運行

GPIO_PORT[Led]->BRR = GPIO_PIN[Led];

如果我們想讓GPIO為高,則運行

GPIO_PORT[Led]->BSRR = GPIO_PIN[Led];

按照我們的原理圖,我的GPIO為低時,LED亮、GPIO為高時,LED滅。

所以我們需要修改函數(shù),如下:

編譯,燒錄。我們就可以看到,咱么iBox上的LED按照我們的預(yù)期點亮。

至此,咱們的第一個實驗完成。

后一集,我們要用Keil建立一個全新的工程,然后利用官方庫文件,裁剪掉不需要的內(nèi)容,做一個屬于自己的第一個工程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 原理圖
    +關(guān)注

    關(guān)注

    1353

    文章

    6428

    瀏覽量

    246719
  • pcb
    pcb
    +關(guān)注

    關(guān)注

    4411

    文章

    23906

    瀏覽量

    425093

原文標題:從原理圖PCB到移植RTOS【細說STM32】【一】

文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    AI代碼之爭忽略了什么

    人工智能的興起讓 COBOL 重新成為話題焦點,市場上也涌現(xiàn)出不少號稱能轉(zhuǎn)換遺留代碼、破解現(xiàn)代化難題的工具。但關(guān)鍵在于厘清這究竟意味著什么,以及它不包含什么。代碼轉(zhuǎn)換是一回事,平臺現(xiàn)代化則完全是另一碼事。這兩者并非同概念,而橫
    的頭像 發(fā)表于 03-02 15:20 ?500次閱讀

    燒錄芯片與IC復(fù)制是一回事嗎?深度解析芯片燒錄原理

    本文明確區(qū)分了“芯片燒錄”與“IC復(fù)制”的本質(zhì)差異。燒錄是為芯片寫入程序的合法生產(chǎn)步驟,核心是通過物理高壓將數(shù)據(jù)寫入芯片存儲單元。而IC復(fù)制則是未經(jīng)授權(quán)的逆向破解與克隆行為。文章著重解釋了現(xiàn)代芯片的加密機制(如熔斷熔絲),該機制允許授權(quán)寫入但阻止非法讀取,從而保護知識產(chǎn)權(quán)。旨在為工程師在量產(chǎn)和選型時提供清晰的技術(shù)與法律邊界認知。
    的頭像 發(fā)表于 01-06 13:12 ?417次閱讀

    pcb絲印是怎么一回事?

    發(fā)表于 12-02 13:47

    【11/27 直播報名】“站式” PCB 設(shè)計 · 25.1 I 第二期:高效高質(zhì)量原理圖設(shè)計

    AllegroX25.1版本已正式發(fā)布!全新的庫設(shè)計及管理方案、原理圖PCB設(shè)計集成、設(shè)計同步分析,為工程師帶來原理圖投板(Gerbe
    的頭像 發(fā)表于 11-14 14:48 ?710次閱讀
    【11/27 直播報名】“<b class='flag-5'>一</b>站式” <b class='flag-5'>PCB</b> 設(shè)計 · 25.1 I 第二期:高效高質(zhì)量<b class='flag-5'>原理圖</b>設(shè)計

    單片機和嵌入式,到底是什么關(guān)系?

    很多人初次接觸嵌入式開發(fā)時,都會聽到句話:“嵌入式其實就是單片機?!笨僧斈阏嬲_始學習時,會發(fā)現(xiàn)嵌入式和單片機雖然經(jīng)?!袄墶痹?b class='flag-5'>一起提,但它們好像又不是一回事。這篇文章,我們就來厘清這兩個概念
    的頭像 發(fā)表于 11-14 10:28 ?1752次閱讀
    單片機和嵌入式,到底是什么關(guān)系?

    請問芯源MCU如何移植RTOS?

    請問芯源MCU如何移植RTOS?有相關(guān)的移植教程嘛?
    發(fā)表于 11-14 07:58

    PCBA和SMT總混淆?文講透電子制造的“組裝”與“貼片”核心差異

    站式PCBA加工廠家今天為大家講講PCBA和SMT之間有什么區(qū)別和聯(lián)系?PCBA和SMT之間的區(qū)別和聯(lián)系。PCBA和SMT并非一回事,它們在電子制造領(lǐng)域中分別代表不同的概念和工藝階段,具體區(qū)別如下
    的頭像 發(fā)表于 11-03 09:51 ?919次閱讀

    麻煩提點原理圖pcb上建議

    麻煩各位大佬,原理圖pcb點建議。
    發(fā)表于 10-15 14:20

    ART-Pi中啟用外部flash是在哪里配置了qspi的引腳呢?

    ,于是我去查找QSPI的io是有復(fù)用引腳的,也就是說不是絕對的像晶振連接那樣子的io固定就是那兩個。那么想請教下各位這個qspi的配置是怎么一回事呢。 提前謝謝各位佬!
    發(fā)表于 10-10 06:09

    別再搞混了!安規(guī)Y電容的「耐溫」和「溫度特性」根本不是一回事

    選錯個電容,可能毀掉整個產(chǎn)品 在日常的電源設(shè)計和EMC整改中,安規(guī)Y電容是我們再熟悉不過的元器件。但你是否曾經(jīng)困惑過: datasheet上標注的125℃和Y5V到底有什么區(qū)別? 很多工程師容易將
    發(fā)表于 09-08 09:54

    用了 10 年網(wǎng)才明白!"帶寬”“寬帶”原來不是一回事!#帶寬 #寬帶 #數(shù)據(jù)采集卡 #模擬信號 #電路知識

    模擬信號
    西安阿爾泰電子科技發(fā)展有限公司
    發(fā)布于 :2025年07月23日 09:23:48

    涂鴉各型號zigbee模塊原理圖PCB封裝

    涂鴉各型號zigbee模塊原理圖PCB封裝
    發(fā)表于 06-04 16:34 ?1次下載

    HC05藍牙原理圖PCB

    HC05藍牙原理圖PCB
    發(fā)表于 06-04 16:31 ?21次下載

    原理圖PCB設(shè)計中的常見錯誤

    在電子設(shè)計領(lǐng)域,原理圖PCB設(shè)計是產(chǎn)品開發(fā)的基石,但設(shè)計過程中難免遇到各種問題,若不及時排查可能影響電路板的性能及可靠性,本文將列出原理圖PCB設(shè)計中的常見錯誤,整理成
    的頭像 發(fā)表于 05-15 14:34 ?1280次閱讀

    今天帶你來看看防逆流是什么?光伏防逆流又是怎么一回事?

    、什么是光伏防逆流 分布式光伏發(fā)電系統(tǒng)中,發(fā)電量超本地負載耗電量時,多余電能可能逆向流入電網(wǎng),此為 “逆流”。光伏防逆流即借助技術(shù)手段與設(shè)備,防止或限制這種逆流。安科瑞+武陳燕
    的頭像 發(fā)表于 05-14 16:40 ?2809次閱讀
    今天帶你來看看防逆流是什么?光伏防逆流又是怎么<b class='flag-5'>一回事</b>?