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