新手如何走進(jìn)STM32(一)
STM32 注意的地方注:AHB主要負(fù)責(zé)外部存儲器時鐘。PB2負(fù)責(zé)AD,I/O,高級TIM,串口1。APB1負(fù)責(zé)DA,USB,SPI,I2C,CAN,串口2345,普通TIM。使用MDK KeiluVision4進(jìn)行學(xué)習(xí),照著前面幾個歷程進(jìn)行學(xué)習(xí),看懂幾個歷程后想自己也照著搞搞,開始有些錯誤經(jīng)調(diào)試后都解決了,但是在其他問題都解決后,編譯就出現(xiàn)了More More than one section matches selector - cannot all be FIRST/LAST這個錯誤,還提示啥包涵了一個錯誤的路徑,本人各種檢查路徑,和歷程的都一樣了,可這個問題還沒解決,當(dāng)然后來發(fā)現(xiàn)這個不是路徑的問題,上網(wǎng)找了好久,終于發(fā)現(xiàn)了,在歷程中RVMDK以及STM32_EVAL中的幾個初始匯編文件前有三個紅點,而自己的工程中沒有,再找資料才發(fā)現(xiàn)了如何設(shè)置,在此分享下,希望對大家有幫助:對需要設(shè)置的文件(就是文件上有三個紅點的文件,幾個歷程基本都一樣),點右鍵Options for File'***',勾去灰化的Include in Target Build和Always Build,然后才重新編譯,就能順利通過了。類型說明------100腳S - 電源I - 輸入O - 輸出I/O - 輸入輸出FT - 5V 兼容VDD - 單片機(jī)3.3V 電源正VSS - 單片機(jī)3.3V 電源負(fù)VDDA - 單片機(jī)A/D 轉(zhuǎn)換器電源正VSSA - 單片機(jī)A/D 轉(zhuǎn)換器電源負(fù)VREF+ - 單片機(jī)A/D 轉(zhuǎn)換器參考電壓正VREF- - 單片機(jī)A/D 轉(zhuǎn)換器參考電壓負(fù)由于STM32F103 系列單片機(jī)的內(nèi)部高速RC 振蕩器(HSI)由VDDA、VSSA 供電,故即使不使用單片機(jī)自帶的A/D 轉(zhuǎn)換器,也必須保證VDDA、VSSA 的供電,否則STM32F103單片機(jī)不能正常啟動。在EC30-EKSTM32 核心板的背面,VDDA 和VSSA 分別通過電感連接到VDD 和VSS。如果外部有VDDA、VSSA 的處理電路,需要將背面這兩個電感拆除。STM32F103 有兩個獨立的12 位A/D 轉(zhuǎn)換器,16 個A/D 轉(zhuǎn)換通道。EC30-EKSTM32 只使用第1 個A/D 轉(zhuǎn)換器ADC1。16 個A/D 轉(zhuǎn)換通道分布在PA0 ~ PA7、PB0、PB1、PC0 ~ PC5這16 個管腳上,其中任何一個管腳都可以配置為模擬量輸入管腳AIWx。 設(shè)置NVIC優(yōu)先級分組,方式。注:一共16個優(yōu)先級,分為搶占式和響應(yīng)式。兩種優(yōu)先級所占的數(shù)量由此代碼確定,NVIC_PriorityGroup_x可以是0、1、2、3、4,分別代表搶占優(yōu)先級有1、2、4、8、16個和響應(yīng)優(yōu)先級有16、8、4、2、1個。規(guī)定兩種優(yōu)先級的數(shù)量后,所有的中斷級別必須在其中選擇,搶占級別高的會打斷其他中斷優(yōu)先執(zhí)行,而響應(yīng)級別高的會在其他中斷執(zhí)行完優(yōu)先執(zhí)行。 STM32中有些硬件功能可以由用戶自己配置,選擇字節(jié)用于這些配置。這些通過用戶選擇字節(jié)配置的功能不能簡單地通過軟件配置,相應(yīng)的功能必須在芯片上電時存在。如內(nèi)部的獨立看門狗,可以通過用戶選擇字節(jié)配置為做看門狗用,也可以通過用戶選擇字節(jié)配置為做普通計數(shù)器用;做看門狗使用時,軟件是無法停止它的,所以芯片上電時這個功能就必須有效。STM32三種啟動模式中存儲器的存儲介質(zhì) STM32三種啟動模式對應(yīng)的存儲介質(zhì)均是芯片內(nèi)置的,它們是:1)用戶閃存 = 芯片內(nèi)置的Flash。2)SRAM = 芯片內(nèi)置的RAM區(qū),就是內(nèi)存啦。3)系統(tǒng)存儲器 = 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時在這個區(qū)域預(yù)置了一段Bootloader,就是通常說的ISP程序。這個區(qū)域的內(nèi)容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區(qū)。在每個STM32的芯片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在芯片復(fù)位時的電平狀態(tài)決定了芯片復(fù)位后從哪個區(qū)域開始執(zhí)行程序,見下表:BOOT1=x BOOT0=0 從用戶閃存啟動,這是正常的工作模BOOT1=0 BOOT0=1 從系統(tǒng)存儲器啟動,這種模式啟動的程序功能由廠家設(shè)置。BOOT1=1 BOOT0=1 從內(nèi)置SRAM啟動,這種模式可以用于調(diào)試。STM32 GPIO端口的輸出速度設(shè)置當(dāng)STM32的GPIO端口設(shè)置為輸出模式時,有三種速度可以選擇:2MHz、10MHz和50MHz,這個速度是指I/O口驅(qū)動電路的速度,是用來選擇不同的輸出驅(qū)動模塊,達(dá)到最佳的噪聲控制和降低功耗的目的。高頻的驅(qū)動電路,噪聲也高,當(dāng)你不需要高的輸出頻率時,請選用低頻驅(qū)動電路,這樣非常有利于提高系統(tǒng)的EMI性能。當(dāng)然如果你要輸出較高頻率的信號,但卻選用了較低頻率的驅(qū)動模塊,你很可能會得到失真的輸出信號。實際上芯片內(nèi)部在I/O口的輸出部分安排了多個響應(yīng)速度不同的輸出驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路。注意:GPIO的引腳速度是指I/O口驅(qū)動電路的響應(yīng)速度而不是輸出信號的速度,輸出信號的速度與你的程序有關(guān)。 關(guān)鍵是,GPIO的引腳速度跟應(yīng)用匹配。比如對于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引腳速度就夠了,既省電也噪聲小。深圳STM32技術(shù)提升QQ754634522,通過本帖添加可免費了解體驗課程。對于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。對于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,需要選用50M的GPIO的引腳速度。