嵌入式系列 | STM32F103C8T6 初探

2021-03-02 掙扎的編程狗

最近這段時間因為成謎於物聯網中無法自拔,所以獨自在網際網路的世界中汲取著為數不多的知識,雖然教程有很多,但是實際的可以從最基礎的開始寫的教程並不常見,所以在自己經過很長時間的學習,在這裡記錄一下自己從0開始到點亮STM32F103C8T6這塊小板上LED的過程。

基礎環境介紹

基礎軟體列表基礎軟體配置1.STM32CubeMX

安裝java環境
sudo apt install default-jre

下載STM32CubeMX,下載連結看底部

下載的zip壓縮包中,有linux和exe的版本,自行選擇安裝,如果碰到安裝linux報錯,有可能是64位系統不兼容32位程序庫,安裝sudo apt install libc6-i386

給linux文件執行權限sudo chmod a+x SetupSTM32CubeMX-6.0.1.linux

執行安裝: sudo ./SetupSTM32CubeMX-6.0.1.linux

2.stlink驅動安裝3.gcc-arm-none-eabi

所有前置步驟完成後,下面開始軟體的使用及項目配置環節

STM32CubeMX

配置代理:

    打開軟體首先配置proxy,有代理的最好先掛上代理,之後庫文件下載會比較快,不然會很慢,沒有代理的需要將類型設置為使用系統代理。

下載庫文件:

    接下來開始下載目標板所對應的庫文件,這裡我的板子是STM32F1系列的,所以下載對應的庫文件

創建工程:

    點擊file,選擇new project,然後等待下載一系列文件後,進入到下面的界面

按照架構,系列,具體名稱選擇模板,點擊右上角Start Project進入到下面界面

在這裡有幾個地方是需要提前配置的,一個是RCC時鐘配置,這些都需要一點晶片的基礎知識,這裡只要照做就可以了,將HSE高速時鐘配置成Crystal/Ceramic Resonator,LSE低速時鐘不做配置

緊接著配置GPIO口,查看目標板的數據手冊,可以知道PC13即C13口是直接控制主板一個LED燈的通斷的,所以這裡將PC13口設置為GPIO-Output

然後點擊Clock Configuration標籤,進入時鐘配置頁面,將中間HCLK的值從8改為72,即最高頻率,遇到如下界面點擊yes

配置完成後如下所示

最後進入這個軟體最後配置的環節

點擊Project Manager標籤頁,填上相關的空位,在Code Generator下的Toolchain/IDE 下,選擇Makefile,這裡方便之後使用make直接編譯成hex/bin文件,從而不需要藉助keil5或者IAR等軟體

最後點擊右上角GENERATE CODE,在你指定目錄則會生成對應的項目文件夾。

添加代碼並編譯:

使用vscode打開Core/Src/main.c 文件,在while循環中添加如下代碼,作用是將13號口,進行設置/復位操作,並進行1s的延遲。

while (1)  {    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);    HAL_Delay(1000);  }

保存代碼後,打開Terminal,定位到項目目錄下,和Makefile同級,然後執行:

最後會在當前目錄下生成一個build文件夾,裡面有產生的中間文件、hex文件、和bin文件,最後將目標板連接上stlink。

上傳代碼:

在Terminal中執行:

st-flash write ./build/BasicLED.bin 0x8000000

最後點擊一下板子上的復位按鈕,則板載的LED就會間隔1s開始閃爍

建議每次寫入前先執行一個擦除操作: st-flash erase

總結:

    至此,整個入門項目就結束了,起初一直在糾結於到底是用什麼軟體進行開發,是KD5好還是IAR好,最後發現,還是最適合自己的才是最好的,我就喜歡使用Vscode,我就是喜歡最簡單的Terminal進行代碼的上傳,然後剛開始不了解一些STM的原理的時候很糾結STM32CubeMX到底怎麼使用,後來發現,STM32CubeMX根據你項目的複雜程度進行項目的配置,比如這個項目中只需要配置GPIO13口,和高速時鐘,所以在繼續進行STM32的學習中,還需要學習一些基礎的知識,不會讓你在學習開發的過程中像只無頭蒼蠅。

    最後,希望大家可以堅持自己所堅持的,喜歡自己所喜歡的!

STM32CubeMX連結:

https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

相關焦點

  • 【C++開發Stm32-環境搭建】 Stm32f103c8t6支持Arduino庫開發
    這個時候在桌面就可以看到STM32CubeProgrammer的圖標了。在彈出來的窗口上方輸入sam,將會搜索出來相關的內容,這次只針對stm32f103教學,這晶片是cortex-m3內核,所以要安裝cortex-m3的包。截圖的流程很清晰,跟著一步一步操作基本上不會有問題。
  • STM32F103C8T6工控板與LabVIEW的串口通訊實例
    今天分享STM32F103C8T6工控板與LabVIEW的串口通訊實例,主要工作如下: 1)基於Keil MDK寫一個串口通信程序,主要配置 STM32F103C8T6 晶片的USART1相關參數並創建串口1中斷服務函數(對應引腳為PA9和PA10,可在手冊中看到,如下圖所示);
  • STM32F103C8T6藍色藥丸入門 -【STM32教程】
    Arduino的替代產品是基於STM32F103C8T6微控制器的開發板,通常被稱為Blue Pill(矩陣參考)。該微控制器基於STMicroelectronics製造的ARM Cortex-M3體系結構。STM32F103C8T6是一款功能非常強大的微控制器,具有32位CPU,可以輕鬆擊敗Arduino UNO。
  • 五分鐘淺析STM32的五大嵌入式作業系統
    下面分別介紹這五種嵌入式作業系統的特點及不足。綜上可知,μClinux最大特點在於針對無MMU處理器設計,這對於沒有MMU功能的stm32f103來說是合適的,但移植此系統需要至少512KB的RAM空間,1MB的ROM/FLASH空間,而stmf103擁有256K的FLASH,需要外接存儲器,這就增加了硬體設計的成本。
  • STM32F103入門 | 1.STM32F103介紹
    1.1 開發板簡介STM32F1
  • STM32f103單片機(三)——串口
    在stm32f10x.h中添加函數void UART_TRxOver_Interrupt(void);在stm32f10x.c的串口中斷入口中添加UART_TRxOver_Interrupt();
  • 五大適合STM32的嵌入式作業系統
    μClinux是一種優秀的嵌入式Linux版本,其全稱為micro-control Linux,從字面意思看是指微控制Linux。同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。
  • 適合STM32的三大嵌入式作業系統
    下面分別介紹這五種嵌入式作業系統的特點及不足。μClinux是一種優秀的嵌入式Linux版本,其全稱為micro-control Linux,從字面意思看是指微控制Linux。綜上可知,μClinux最大特點在於針對無MMU處理器設計,這對於沒有MMU功能的stm32f103來說是合適的,但移植此系統需要至少512KB的RAM空間,1MB的ROM/FLASH空間,而stmf103擁有256K的FLASH,需要外接存儲器,這就增加了硬體設計的成本。
  • STM32學習筆記01—STM32F103環境搭建
    ,Cortex-M系列,Cortex-R系列和Cortex-A系列,Cortex系列屬於ARMv7架構,這是2010年為止ARM公司最新的指令集架構,其中Cortex-M主要用於低端的嵌入式控制系統中,Cortex-R主要用於實時系統中,Cortex-A系列則是用於作業系統,智能設備和行動電話等領域,比如常見的Cortex-A15(用於Android,Ubuntu等系統中)。
  • RT-Thread物聯網作業系統入門(1)——Keil 模擬器 STM32F103 上手指南
    一般嵌入式作業系統因為它的特殊性,往往和硬體平臺密切相關連,具體的嵌入式作業系統往往只能在特定的硬體上運行。
  • 關於STM32Cube的幾個常見問題
    四、STM32Cube HAL庫可以使用中斷或DMA嗎?答:是的。HAL層支持三種 API編程模型:輪詢、中斷和DMA(帶或不帶中斷的產生)。五、有基於相關開發工具鏈的工程例程嗎?答:有的。stm32cube各系列固件包提供了豐富的應用例程。
  • 從0-1帶你入門物聯網作業系統(1)——Keil 模擬器 STM32F103 上手指南
    一般嵌入式作業系統因為它的特殊性,往往和硬體平臺密切相關連,具體的嵌入式作業系統往往只能在特定的硬體上運行。
  • STM32CubeMX教程-GPIO
    示例詳解    做實驗用到的STM32F103C8T6最小系統板,如下圖所示。使用STM32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。新建並配置工程    在新彈出的界面中的搜索框中輸入 「stm32f103c8
  • STM32CubeMX-系列教程入門
    STM32Cube 是一個全面的軟體平臺,包括了ST產品的每個系列。
  • STM32CubeMX軟體的下載和安裝
    晶片固件庫下載同樣是在STM32CubeMX軟體的下載界面,點擊工具與軟體,在MCU及MPU嵌入式軟體標題下,選擇需要的晶片固件庫進行下載。3,STM32CubeMX軟體的安裝解壓en.stm32cubemx_v6-0-1.zip壓縮包,雙擊SetupSTM32CubeMX-6.0.1.exe文件進行STM32CubeMX
  • stm32h7「資源尋找介紹」
    stm32h7開發資源分為開發文檔、軟體包、開發工具。
  • STM32F103入門 | 2.STM32F103xx內部資源介紹
    2.2 STM32F103xx概述2.2.1 ARM®的Cortex™-M3核心並內嵌快閃記憶體和SRAMARM的Cortex™-M3處理器是最新一代的嵌入式ARM2.2.5 嵌套的向量式中斷控制器(NVIC)STM32F103xx增強型產品內置嵌套的向量式中斷控制器,能夠處理多達43個可屏蔽中斷通道(不包括16個Cortex™-M3的中斷線)和16個優先級。
  • 主流嵌入式作業系統(RTOS)有哪些?看這14種
    下面分別介紹這十四種種嵌入式作業系統的特點。1、μClinuxμClinux是一種優秀的嵌入式Linux版本,其全稱為micro-control Linux,從字面意思看是指微控制Linux。綜上可知,μClinux最大特點在於針對無MMU處理器設計,這對於沒有MMU功能的stm32f103來說是合適的,但移植此系統需要至少512KB的RAM空間,1MB的ROM/FLASH空間,而stmf103擁有256K的FLASH,需要外接存儲器,這就增加了硬體設計的成本。