小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

STM32開(kāi)發(fā)經(jīng)驗(yàn)、Keil使用技巧與注意事項(xiàng)整理

 xpxys99 2019-09-06

STM32命名規(guī)則

STM32開(kāi)發(fā)板容量

BOOT設(shè)置

平時(shí)運(yùn)行程序時(shí)默認(rèn)設(shè)置BOOT0為0,BOOT1為0;若要用串口下載代碼,則需要設(shè)置BOOT0為1、BOOT1為0,下載完后改為默認(rèn)狀態(tài);

供電電源

開(kāi)發(fā)板采用5V供電,請(qǐng)勿同時(shí)使用USB和鳳凰端子供電。

外接擴(kuò)展板時(shí),需確保:

  1. 擴(kuò)展板的VCC和GND之間沒(méi)有短路;
  2. 擴(kuò)展板和開(kāi)發(fā)板之間的VCC是否對(duì)應(yīng)。

USB仿真器

  1. 不能帶電拔插USB仿真器;
  2. 上電時(shí),先插仿真器,后給開(kāi)發(fā)板供電;
  3. 掉電時(shí),先斷開(kāi)開(kāi)發(fā)板電源,再拔掉仿真器;
  4. 仿真器操作不當(dāng),會(huì)燒壞開(kāi)發(fā)板芯片,甚至燒壞電腦主板的USB接口芯片。

IO口

  • 輸入(IN)
  1. 輸入電壓范圍:高(1)——0V,低(0)——3.3V;有些開(kāi)發(fā)板的IO口可容忍5V,須查看對(duì)應(yīng)的芯片說(shuō)明手冊(cè)。
  2. 如果電壓不能保證在3.3V,采用3V穩(wěn)壓管(注意限流電阻的選擇)
  • 輸出(OUT)
  1. 輸出電壓范圍:高(1)——0V,低(0)——3.3V;
  2. 注意負(fù)載的影響:

-如果涉及強(qiáng)電(繼電器)的控制,采用光電隔離;

-負(fù)載大(需求電流大)時(shí),需加緩沖。

c.用作ADC輸入時(shí),保證輸入的模擬信號(hào)電平不超過(guò)3V,否則會(huì)燒壞開(kāi)發(fā)板。

  • 電平
  1. 當(dāng)不知道某個(gè)IO口的電平時(shí),可以用電壓表連接IO口和GND進(jìn)行測(cè)量;或者連一個(gè)LED燈看他的亮滅。
  2. 當(dāng)需要測(cè)試IO口脈沖頻率時(shí)候(如PWM),也可以用LED燈測(cè)試;但當(dāng)頻率很高以至于LED不能辨別時(shí),可以通過(guò)邏輯分析儀測(cè)試。
  • 串口
  1. 串口(COM)被占用

當(dāng)打開(kāi)串口的時(shí)候,有時(shí)會(huì)提示“無(wú)法打開(kāi)串口”,“串口被占用”,“串口資源不存在”等信息。

這些信息提示要使用的串口已經(jīng)被其他進(jìn)程占用,可以到計(jì)算機(jī)的設(shè)備管理器中進(jìn)行查看

當(dāng)知道這個(gè)進(jìn)程是什么,可以到任務(wù)管理器中進(jìn)行關(guān)閉;

當(dāng)不知道這個(gè)串口被什么進(jìn)程占用的時(shí)候,就需要從注冊(cè)表處理;

在“開(kāi)始菜單”中的“運(yùn)行”中輸入regedit,然后點(diǎn)“確定”,打開(kāi)注冊(cè)表編輯器。

按照下圖中的路徑找到COM Name Arbiter。然后在右側(cè)“ComDb”上點(diǎn)“右鍵”選擇“刪除”。刪除掉注冊(cè)表的這個(gè)項(xiàng)目是讓win7系統(tǒng)重新構(gòu)建COM端口的列表,這樣就可以改掉那些端口被占用的狀態(tài)。

2. 發(fā)送測(cè)試數(shù)據(jù),接收端丟失第一個(gè)數(shù)據(jù)

硬件復(fù)位后,串口發(fā)送首個(gè)數(shù)據(jù)之前,先讀取一下USART_SR,則能夠保證首個(gè)數(shù)據(jù)發(fā)送時(shí),不出現(xiàn)覆蓋的情況。當(dāng)然,也有別的方法,比如先清除TC狀態(tài)位,或是在write USART_DR之后,加入一個(gè)小延時(shí),讓數(shù)據(jù)發(fā)送完畢,應(yīng)該也能間接排除這個(gè)錯(cuò)誤。

開(kāi)發(fā)板使用

1、盡量使用合適的保護(hù)盒盛裝,不要直接使用裸板,容易損壞元件、造成短路等;

2、確定開(kāi)發(fā)板工作電壓、工作電流,確定外設(shè)版本與接口類型,確定串口工作電平等;

3、常見(jiàn)工作電壓為:5V,7.2V,9V,12V,15V等,通常為5V;

4、常見(jiàn)串口工作電平:1.8V,3.3V,5V,通常為3.3V,個(gè)別開(kāi)發(fā)板串口工作電平1.8v且與芯片直連,容易燒壞;

5、常見(jiàn)工作電流為500mA,1A,2A,4A幾個(gè)級(jí)別;

6、常見(jiàn)的顯示接口為HDMI,microHDMI,displayport;

7、根據(jù)開(kāi)發(fā)板工作需要,判斷散熱情況,適當(dāng)?shù)臑橹餍酒惭b散熱片、散熱風(fēng)扇;

8、不要超頻工作;

9、不要用手直接抓上電的開(kāi)發(fā)板。

10、不要長(zhǎng)時(shí)間讓開(kāi)發(fā)板供電,有些板卡散熱做的不好,要注意觸摸主芯片有沒(méi)有過(guò)熱現(xiàn)象。

11、B3、B4、A15默認(rèn)為JTAG引腳;A13、A14默認(rèn)為SWD引腳??墒褂肎PIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE)開(kāi)啟SWD而關(guān)閉JTAG功能,或用寫寄存器的方式,SWG_CFG[2.0]寫入000;

12、1個(gè) USB 供電最多500mA,且由于導(dǎo)線電阻存在,供到開(kāi)發(fā)板的電壓一般都不會(huì)有5V,如果使用了很多大負(fù)載外,比設(shè)比4.3 寸屏、7寸屏、網(wǎng)絡(luò)攝像頭模塊等,那么可能引起 USB 供電不夠,所以如果是使用 4.3 4.3屏/7 寸屏,或者同時(shí)用到多個(gè)模塊的時(shí)候, 建議大家使用一個(gè)獨(dú)立電源供電。如果沒(méi)有獨(dú)立電源,建議可以同時(shí)插 2個(gè) USB 口,并插上 JTAG,這樣供電可以更足一些。

燒芯片情況,主要是靜電原因:

1、接入電腦 USB時(shí)燒了。電腦USB口帶靜電,然后接入到核心板,用手拿著核心板,容易導(dǎo)致燒掉核心板,尤其是身體碰到金屬和地的時(shí)候。盡量不要用手直接拿核心板,身體不要碰到地面(穿鞋子)。

2、用開(kāi)發(fā)板做智能車,小車跑的過(guò)程中燒了。車輪與賽道摩擦的過(guò)程中使得小車帶電,把電引到核心板就會(huì)燒了核心板。可以用錫紙包住車底盤來(lái)隔離保護(hù)核心板。銅屑等金屬碰到芯片的管腳短路,建議用黑膠布包著核心板上的主芯片。小車跑的過(guò)程中碰撞,容易導(dǎo)致短路,導(dǎo)致核心板燒了。對(duì)于露出金屬表面的電路都盡量用黑膠布包緊。電機(jī)剎車加速導(dǎo)致產(chǎn)生反沖電流,如果IO口沒(méi)經(jīng)過(guò)隔離保護(hù)而直接接入電機(jī)驅(qū)動(dòng)模塊,就容易出現(xiàn)燒芯片情況。建議IO口經(jīng)過(guò)隔離保護(hù)電路后才接入電機(jī)驅(qū)動(dòng)模塊。舵機(jī)也是如此,要進(jìn)行隔離(舵機(jī)內(nèi)部也是電機(jī))。

3、超頻使用。超頻其實(shí)是對(duì)單片機(jī)損耗很大的,雖然可以提供性能,但也更容易燒壞。頻率一般求穩(wěn)定,不建議設(shè)置最高極限頻率。環(huán)境溫度高時(shí)候,如果超頻過(guò)高,導(dǎo)致發(fā)熱偏大,容易導(dǎo)致芯片燒掉的??梢钥紤]安裝散熱片和降低頻率

4、電源管腳短路或者電源電壓拉低,芯片發(fā)熱。這是芯片內(nèi)部的電源模塊損壞導(dǎo)致的。一般換個(gè)芯片就可以解決。

5、切記不要GPIO配置輸出高電平,然后硬件又接地這種類似的短路。非常容易燒板子的!不要以為程序就不會(huì)燒板子。

6、單片機(jī)出現(xiàn)芯片發(fā)熱,但可下載程序,可運(yùn)行程序。這是芯片內(nèi)部的電源模塊損壞導(dǎo)致的,加大3.3V和GDN之間的電容,可減少發(fā)熱,但最好是換個(gè)芯片。

芯片燒壞,只能從步驟,實(shí)驗(yàn)結(jié)果,推測(cè)原因。

程序調(diào)試

  • 有兩種仿真模式:
  1. 模擬仿真——MDK內(nèi)部仿真,需要設(shè)置一下才可使用。

藍(lán)色箭頭處可直接照填,橙色箭頭處填你所用的開(kāi)發(fā)板型號(hào)。

2. 在線調(diào)試——連接好板子,可在線調(diào)試。

  • PWM波有毛刺,但把預(yù)分頻系數(shù)調(diào)成199以下就沒(méi)有這種現(xiàn)象發(fā)生,這種是過(guò)沖(振鈴現(xiàn)象),串聯(lián)電阻,就可以解決。
  • 串口調(diào)試
  1. 程序和串口調(diào)試工具的波特率必須要一致,否則無(wú)法接收數(shù)據(jù)、或接收不正確。
  2. 在用到“復(fù)用重映射”的時(shí)候要先使能AFIO的時(shí)鐘

RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, ENABLE);

其次是

GPIO_PinRemapConfig(GPIO_FullRemap_USARTx, ENABLE);

x可以是1、2、3等的串口號(hào)。

最后是開(kāi)時(shí)鐘

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE)

MDK(Keil)使用技巧

1. 快速找到函數(shù)定義

在閱讀代碼時(shí),為了要知道某個(gè)函數(shù)所實(shí)現(xiàn)的功能以及其他具體的情況,往往需要查看某一個(gè)函數(shù)的定義。首先,我們的光標(biāo)要選中該函數(shù),再按下快捷鍵【F12】然后就可以跳到函數(shù)的定義處了;或者單擊右鍵,然后在彈出來(lái)的快捷菜單中選擇“Go To Definition Of ‘xxx’”(“xxx”為我們選中的函數(shù)名)。

2. 批量注釋和批量取消注釋

在編寫函數(shù)的過(guò)程中,往往避免不了出現(xiàn)各種各樣的問(wèn)題,出問(wèn)題時(shí)在調(diào)試的過(guò)程中需要注釋一些代碼和對(duì)一些代碼進(jìn)行取消之前的注釋,以此來(lái)對(duì)代碼進(jìn)行測(cè)試和完善。

3. 整段縮進(jìn)

選中整段后,按table鍵即可一起縮進(jìn);整段反向縮進(jìn),按shift+table。

4. 用戶自定義關(guān)鍵字

進(jìn)入U(xiǎn)ser Keywords 選項(xiàng)卡,C/C++ Editor Files,在右邊的 User Keywords 對(duì)話框下面輸入自己定義的關(guān)鍵字:

5. 語(yǔ)法檢測(cè)和代碼提示

keil MDK5 支持代碼提示與動(dòng)態(tài)語(yǔ)法檢測(cè)功能,打開(kāi)配置對(duì)話框,選擇 Text Completion 選項(xiàng)卡。

Strut/Class Members,用于開(kāi)啟結(jié)構(gòu)體/類成員提示功能。

Function Parameters,用于開(kāi)啟函數(shù)參數(shù)提示功能。

Symbols after xx characters,用于開(kāi)啟代碼提示功能。

Dynamic Syntax Checking,則用于開(kāi)啟動(dòng)態(tài)語(yǔ)法檢測(cè)。

6. 代碼補(bǔ)全

可以在configuration(配置項(xiàng))的Editor(編輯器)選項(xiàng)卡里設(shè)置漢語(yǔ)字符編碼GB23132,保證復(fù)制出來(lái)的漢語(yǔ)注釋不會(huì)亂碼,此外,可以在User Keywords(用戶自定義關(guān)鍵字)選項(xiàng)卡設(shè)置自己常用的關(guān)鍵字,Shortcut Keys(快捷鍵)設(shè)置符合自己使用習(xí)慣的快捷鍵,尤其是Text Completion(代碼補(bǔ)全)非常實(shí)用。

Show Code Completion List for (代碼自動(dòng)補(bǔ)全列表)

struct/class Members (結(jié)構(gòu)體/類成員)

Function Parameters (函數(shù)參數(shù)列表)

Symbols after 4 Characters

ENTER/TAB all fill-up character (enter/tab鍵自動(dòng)補(bǔ)全)

Dynamic syntax Checking (動(dòng)態(tài)語(yǔ)法檢查)

Enable (打開(kāi))(此選項(xiàng)會(huì)導(dǎo)致誤報(bào),只要編譯通過(guò)便可不予理會(huì))

STM32工程目錄下面的組以及重要文件講解

1.組 USER 下面存放的主要是用戶代碼。system_stm32f10x.c 里面主要是系統(tǒng)時(shí)鐘初始化函數(shù) SystemInit 相關(guān)的定義,一般情況下文件用戶不需要修改。 stm32f10x_it.c 里面存放的是部分中斷服務(wù)函數(shù),main.c函數(shù)主要存放的是主函數(shù)。

2.組 HARDWARE 下面存放的是每個(gè)實(shí)驗(yàn)的外設(shè)驅(qū)動(dòng)代碼,他的實(shí)現(xiàn)是通過(guò)調(diào)用 FWLib下面的固件庫(kù)文件實(shí)現(xiàn)的,比如 led.c 里面調(diào)用 stm32f10x_gpio.c 里面的函數(shù)對(duì) led 進(jìn)行初始化。

3.組 SYSTEM 是 ALIENTEK 提供的共用代碼, 包含 Systick 延時(shí)函數(shù), IO 口位帶操作以及串口相關(guān)函數(shù)

4.組 CORE 下面存放的是固件庫(kù)必須的核心文件和啟動(dòng)文件。這里面的文件用戶不需要修

改。

5.組 FWLib 下面存放的是 ST 官方提供的外設(shè)驅(qū)動(dòng)固件庫(kù)文件,這些文件大家可以根據(jù)工程需要來(lái)添加和刪除。每個(gè) stm32f10x_ppp.c 源文件對(duì)應(yīng)一個(gè) stm32f10x_ppp.h 頭文件

6.README 分組主要就是添加了 README.TXT 說(shuō)明文件,對(duì)實(shí)驗(yàn)操作進(jìn)行相關(guān)說(shuō)明

STM32 的 IO 口可以由軟件配置成 8 種模式

1、 輸入浮空

2、 輸入上拉

3、 輸入下拉

4、 模擬輸入

5、 開(kāi)漏輸出

6、 推挽輸出

7、 推挽式復(fù)用功能

8、 開(kāi)漏復(fù)用功能

每個(gè) IO 端口都有 7 個(gè)寄存器來(lái)控制,每個(gè)寄存器的詳細(xì)使用方法,可以參考《STM32 中文參考手冊(cè) V10》 P105~P129。

每個(gè) IO 口可以自由編程, 但 IO 口寄存器必須要按 32 位字被訪問(wèn)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多