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