一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

怎樣將STM32F4xx標(biāo)準(zhǔn)外圍設(shè)備庫與MikroC Pro for ARM集成

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-05 16:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32F4xx系列微處理器比市場上同類產(chǎn)品先進得多。除了是快速的32位MCU,STM32F4還具有豐富的硬件外設(shè)支持以及DSP引擎優(yōu)勢。就功能和價格而言,STM32F4是全勝者。最近,STM32用戶社區(qū)激增。 STM32 Discovery開發(fā)板正在以前所未有的速度增長。最近,我?guī)状问盏阶x者關(guān)于STM32F4xx標(biāo)準(zhǔn)外設(shè)庫(SPL)與MikroC Pro for ARM集成的切實詢問,因此,盡管這不是我關(guān)于STM32 ARM的主流文章之一,但我還是覺得我應(yīng)該解決這個話題。之前,我展示了如何通過MikroC移植STM32F1xx系列設(shè)備的STM32F1xx SPL。這篇文章與以前的文章沒有什么不同-只是微小的變化。我建議讀者在閱讀這篇文章之前先閱讀較早的帖子。

目前MikroC編譯器是為數(shù)不多的尚未正式為SPL集成提供任何支持的編譯器之一。希望他們將來會添加此支持,但是MikroC解決方案的方式與其他編譯器不同。 MikroC擁有非常強大的IDE和豐富的庫基礎(chǔ)支持,而SPL為用戶提供了對芯片硬件的更多控制權(quán)。就像我之前說過的一樣,它們變成了一把雙刃劍。

所需的工具

首先,您需要MikroC Pro for ARM。該編譯器的演示版本提供8k代碼限制,足以滿足第一手ARM經(jīng)驗。您需要一塊STM32F4xx板。我使用了STM32F407VG發(fā)現(xiàn)。 ST Microelectronics的該板 某種程度上是STM32F4系列的旗艦Discovery板,并且非常受歡迎。最后,您將需要我包含在示例中的STM32F4xxx SPL。修改其中的文件以使其與MikroC環(huán)境兼容。

要做的事情

首先,我們需要準(zhǔn)備用于ARM編譯器的MikroC PRO,以鏈接SPL。我假設(shè)編譯器已預(yù)先安裝。首先轉(zhuǎn)到編譯器的安裝文件夾,然后找到 include 文件夾。就我而言,它是: C: Users Public Documents Mikroelektronika mikroC PRO for ARM Include 。

在此文件夾中,有一個名為 stdint.h的文件。將其重命名為 stdint(備份).h 并從提供的文件夾中復(fù)制新的 stdint.h 文件到這個位置。如果您在上一篇文章中已經(jīng)這樣做,或者已升級到MikroC Pro for ARM版本4.15(在撰寫本文時為最新版本),請?zhí)^此部分。

接下來,我們必須更改編譯器的某些選項。啟動編譯器,并如下所示:

工具》》選項》》輸出設(shè)置

檢查 區(qū)分大小寫 。應(yīng)用并關(guān)閉此窗口。如果您之前已經(jīng)做過,請再次跳過此部分。

從現(xiàn)在開始要謹慎命名和字母大小寫,因為編譯器現(xiàn)在對此很敏感,否則您將注定要陷入編程不幸的深淵。只是一個簡單但有用的提示-在進行一些編輯或修改后,很少會編譯您的代碼。這將極大地幫助您調(diào)試一小段編碼窗口中的微小錯誤。

最后將SPL保持在安全的位置。每當(dāng)您使用SPL編碼新項目時,都應(yīng)從該位置復(fù)制該新項目并與該項目一起使用。這樣可以確保原始的SPL副本不會被意外修改。

使用SPL編碼

示例代碼只是另一個閃爍的代碼示例,可以滿足要求。我不會告訴您如何在MikroC中創(chuàng)建新項目。我想這是眾所周知的。創(chuàng)建一個新項目,并使用 項目管理器 添加SPL文件夾中的所有源文件和頭文件。您可以僅添加所需外圍設(shè)備的頭文件和源文件,也可以添加所有文件(如果不確定哪個代表哪個)。前一種方法比后者花費更少的編譯時間。另外,添加 defines.pld 項目級別定義文件?,F(xiàn)在您可以使用SPL進行編碼了。

請注意,由于MikroElektronika尚未正式集成SPL,因此您會注意到紅色帶有SPL的代碼各部分下的錯誤標(biāo)記。這并不罕見,也不是錯誤。所以不用擔(dān)心。

代碼:

#include “stm32f4xx_gpio.h” #include “stm32f4xx_usart.h” #include “stm32f4xx_rcc.h” void setup_GPIOs(); void check_LEDs(); void main() { unsigned char s = 0; setup_GPIOs(); check_LEDs(); while(1) { if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1); s++; } if(s 》= 6) { s = 0; } switch(s) { case 1: { GPIO_SetBits(GPIOD, GPIO_Pin_12); break; } case 2: { GPIO_SetBits(GPIOD, GPIO_Pin_13); break; } case 3: { GPIO_SetBits(GPIOD, GPIO_Pin_14); break; } case 4: { GPIO_SetBits(GPIOD, GPIO_Pin_15); break; } case 5: { GPIO_SetBits(GPIOD, GPIO_Pin_12); GPIO_SetBits(GPIOD, GPIO_Pin_13); GPIO_SetBits(GPIOD, GPIO_Pin_14); GPIO_SetBits(GPIOD, GPIO_Pin_15); break; } default: { break; } } Delay_ms(90); GPIO_ResetBits(GPIOD, GPIO_Pin_12); GPIO_ResetBits(GPIOD, GPIO_Pin_13); GPIO_ResetBits(GPIOD, GPIO_Pin_14); GPIO_ResetBits(GPIOD, GPIO_Pin_15); Delay_ms(90); } } void setup_GPIOs() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); } void check_LEDs() { GPIO_SetBits(GPIOD, (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)); Delay_ms(900); GPIO_ResetBits(GPIOD, (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)); }

演示視頻鏈接:https://www.youtube.com/watch?v=ngk-4Lm11yU。

我個人還沒有到目前為止,我一直依賴SPL,而且我相信原始級別的編碼學(xué)習(xí)。 SPL允許在STM32領(lǐng)域中輸入教科書。難怪它使編碼變得容易,但是在我看來,它的不利影響是它的用戶花在參考手冊和數(shù)據(jù)表上的時間更少。反過來,這將影響他們獲得對內(nèi)部硬件外圍設(shè)備及其工作原理的扎實學(xué)習(xí)。如果SPL通過這種方式使生活變得輕松,那為什么不使用MikroC庫。這些甚至更易于使用。有時圖書館是救星,而有時它們是詛咒。有時您不想重新發(fā)明“輪子”,但您當(dāng)然想用它制造汽車,而我的朋友比什么都值錢。在這一點上,我不想就此事進一步辯論。我將這個選擇留給用戶。

文件:將STM32F4xx標(biāo)準(zhǔn)外圍設(shè)備庫與MikroC Pro for ARM集成。

責(zé)任編輯:wv

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50247
  • STM32F4xx
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    STM32F10xxx參考手冊

    STM32F1XX數(shù)據(jù)手冊中文版
    發(fā)表于 07-10 16:09 ?1次下載

    外圍設(shè)備通過手機連接到BLE應(yīng)用程序,為什么不能連接到Infineaon BLE?

    使用 ch06_ex01_periab \" le 項目創(chuàng)建了外圍設(shè)備。\" \" 使用像 LightBlue 這樣的移動應(yīng)用程序,我能夠連接到這個外圍設(shè)備并更改特征值。 我已經(jīng)使用 \"
    發(fā)表于 07-07 08:06

    是否有可能使用CYSPP配置文件連接到外圍設(shè)備

    我們的現(xiàn)有系統(tǒng)使用中央和外圍設(shè)備,使用基于 Microchip RN4020 的中央和外圍設(shè)備。 由于供應(yīng)限制的原因,我們希望英飛凌 CYBT-483056 SoC 用于 BLE central。 我們想知道是否有可能使用CY
    發(fā)表于 07-07 06:17

    STM32F4標(biāo)準(zhǔn)外設(shè)資料

    stm32f4xx.h,標(biāo)準(zhǔn)外設(shè)
    發(fā)表于 06-08 09:49 ?0次下載

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊.pdf》資料
    發(fā)表于 06-06 17:06 ?5次下載

    STM32F103×8/STM32F103×B MCU手冊

    參考第2.2節(jié):整個系列的完全兼容性。中密度STM32F103xx數(shù)據(jù)手冊必須與低、中、高密度STM 32 f 10 xx參考手冊一起閱讀。有關(guān)數(shù)據(jù)手冊和參考手冊的設(shè)備勘誤表信息,請參
    發(fā)表于 03-18 16:37 ?0次下載

    STM32F4xx中文參考手冊--ST意法半導(dǎo)體

    STM32F4xx中文參考手冊--全中文主營ST意法芯片,需要可提供樣品測試,數(shù)據(jù)手冊,歡迎聯(lián)系.
    發(fā)表于 02-11 16:39 ?3次下載

    GD32F4xx硬件開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32F4xx硬件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 02-07 17:20 ?1次下載
    GD32<b class='flag-5'>F4xx</b>硬件開發(fā)指南

    STM32F405xxSTM32F407xx微控制器數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F405xxSTM32F407xx微控制器數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 01-03 14:49 ?2次下載

    STM32G471xx/473xx/474xx/483xx/484xx設(shè)備勘誤表

    電子發(fā)燒友網(wǎng)站提供《STM32G471xx/473xx/474xx/483xx/484xx設(shè)備
    發(fā)表于 12-20 15:26 ?0次下載

    Arm成功Arm KleidiAI軟件集成到騰訊自研的Angel 機器學(xué)習(xí)框架

    Arm 與騰訊攜手合作,成功 Arm KleidiAI 軟件集成到騰訊自研的 Angel 機器學(xué)習(xí)框架。 ? 借助 KleidiAI 解
    的頭像 發(fā)表于 11-24 15:33 ?1300次閱讀

    從MSP430F4xx遷移到MSP430FR4xx系列

    電子發(fā)燒友網(wǎng)站提供《從MSP430F4xx遷移到MSP430FR4xx系列.pdf》資料免費下載
    發(fā)表于 10-10 11:34 ?0次下載
    從MSP430<b class='flag-5'>F4xx</b>遷移到MSP430FR<b class='flag-5'>4xx</b>系列

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx

    GD32F4xx 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F4xx系列 MCU 保持高度兼容。本文主要從以下三個方面進行介紹
    的頭像 發(fā)表于 09-06 09:40 ?2655次閱讀
    【GD32 MCU 移植教程】8、從 <b class='flag-5'>STM32F4xx</b> 系列移植到 GD32<b class='flag-5'>F4xx</b> 系

    課程上線 | STM32單片機入門教程(1)基于HAL的多核心開發(fā)(F1/F4/G0/U5)

    ?好消息!華清遠見STM32入門視頻課程《基于HALSTM32多核心開發(fā)》正式上線,已更新90講,持續(xù)更新中,8月份全部上線。課程優(yōu)勢真人出鏡,手把手教學(xué)一板玩轉(zhuǎn)
    的頭像 發(fā)表于 08-08 16:42 ?769次閱讀
    課程上線 | <b class='flag-5'>STM32</b>單片機入門教程(1)基于HAL<b class='flag-5'>庫</b>的多核心開發(fā)(<b class='flag-5'>F</b>1/<b class='flag-5'>F4</b>/G0/U5)

    STM32CubeIDE編譯工程報錯如何解決?

    arm-none-eabi-gcc \"../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c\" -mcpu=cortex-m4 -
    發(fā)表于 07-23 07:06