




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
內(nèi)容簡(jiǎn) 前 第一篇硬件 第一章實(shí)驗(yàn)平臺(tái)簡(jiǎn) ALIENTEK戰(zhàn)艦STM32開發(fā)板資源說(shuō) 硬件資源說(shuō) 軟件資源說(shuō) 第二章實(shí)驗(yàn)平臺(tái)硬件資源詳 開發(fā)板原理圖詳 引出IO USB串口/串口1選擇接 復(fù)位電 啟動(dòng)模式設(shè)置接 RS232串 RS485接 游戲手柄接 SPI 3D加速度傳感 溫濕度傳感器接 紅外接收 無(wú)線模塊接 按 PS/2接 有源蜂鳴 SD卡/以太網(wǎng)模塊接 多功能端 音頻選 FM收 音頻輸 音頻編電 2.1.33USB串 開發(fā)板使用注意事 第二篇軟件 STM32固件庫(kù)簡(jiǎn) 庫(kù)開發(fā)與寄存器開發(fā)的關(guān) STM32庫(kù)包介 文件夾介紹 關(guān)鍵文件介紹 新建基于固件庫(kù)的RVMDK工程模 MDK3.8a安裝步 添加License 新建工程模 MDK下的程序與調(diào) STM32程序 文本美 代碼編輯技 其他小技 調(diào)試技 MDK下C語(yǔ)言基礎(chǔ)復(fù) 位操 define宏定 ifdef條件編 extern變量申 typedef類型別 結(jié)構(gòu) 端口復(fù)用和重映 端口復(fù)用功 端口重映 MDK中寄存器地址名稱映射分 MDK固件庫(kù)快速組織代碼技 第五章SYSTEM文件夾介 delay文件夾代碼介 delay_init函 delay_us函 delay_ms函 sys文件夾代碼介 IO口的位操作實(shí) 中斷分組設(shè)置函 printf函數(shù)支 uart_init函 第三篇實(shí)戰(zhàn) 第六章跑馬燈實(shí) STM32IO簡(jiǎn) 硬件設(shè) 軟件設(shè) 仿真與第七章蜂鳴器實(shí) 蜂鳴器簡(jiǎn) 硬件設(shè) 軟件設(shè) 仿真與第八章按鍵輸入實(shí) STM32IO口簡(jiǎn) 硬件設(shè) 軟件設(shè) 仿真與第九章串口實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十章外部中斷實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十一章獨(dú)立看門狗(IWDG)實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十二章窗口門狗(WWDG)實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十三章定時(shí)器中斷實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十四章輸出實(shí) 簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十五章輸入捕獲實(shí) 輸入捕獲簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十六章電容觸摸按鍵實(shí) 電容觸摸按鍵簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十七章OLED顯示實(shí) OLED簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十八章TFTLCD顯示實(shí) TFTLCD簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第十九章USMART調(diào)試組件實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十章RTC實(shí)時(shí)時(shí)鐘實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十一章待機(jī)喚醒實(shí) 硬件設(shè) 軟件設(shè) 與測(cè) 第二十二章ADC實(shí) STM32ADC簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十三章內(nèi)部溫度傳感器實(shí) STM32內(nèi)部溫度傳感器簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十四章DAC實(shí) STM32DAC簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十五 DAC實(shí) DAC簡(jiǎn) 25.325.3軟件設(shè) 25.4驗(yàn) 第二十六章DMA實(shí) STM32DMA簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十七章IIC實(shí) IIC簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十八章SPI實(shí) SPI簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第二十九章485實(shí) 485簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十章CAN通訊實(shí) CAN簡(jiǎn) CAN發(fā)送流 CAN接收流 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十一章觸摸屏實(shí) 觸摸屏簡(jiǎn) 31.331.3軟件設(shè) 31.4驗(yàn) 第三十二章紅外實(shí) 紅外簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十三章游戲手柄實(shí) 游戲手柄簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十四章三軸加速度傳感器實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十五章DS18B20數(shù)字溫度傳感器實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十六章DHT11數(shù)字溫濕度傳感器實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十七章無(wú)線通信實(shí) NRF24L01無(wú)線模塊簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十八章PS2鼠標(biāo)實(shí) PS/2簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第三十九章FLASH模擬EEPROM實(shí) STM32FLASH簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十章FM收發(fā)實(shí) RDA5820簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十一章頭實(shí) OV7670簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十二章外部SRAM實(shí) IS62WV51216簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十三章內(nèi)存管理實(shí) 內(nèi)存管理簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十四章SD卡實(shí) SD卡簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十五章FATFS實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十六章漢字顯示實(shí) 漢字顯示原理簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十七章顯示實(shí) 47.1格式簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十八章照相機(jī)實(shí) BMP編碼簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第四十九章音樂(lè)器實(shí) VS1053簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十章機(jī)實(shí) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十一章手寫識(shí)別實(shí) 手寫識(shí)別簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十二章T9拼音輸入法實(shí) 拼音輸入法簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十三章串口IAP實(shí) IAP簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十四章觸控USB鼠標(biāo)實(shí) USB簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十五章USB實(shí) USB簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十六章USB聲卡實(shí) USB聲卡簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十七章ENC28J60網(wǎng)絡(luò)實(shí) ENC28J60以及uIP簡(jiǎn) ENC28J60簡(jiǎn) uIP簡(jiǎn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第五十八章UCOSII實(shí)驗(yàn)1-任務(wù)調(diào) 硬件設(shè) 軟件設(shè) 驗(yàn) 任務(wù)刪除,掛起和恢復(fù)測(cè) 第五十九章UCOSII實(shí)驗(yàn)2-信號(hào)量和郵 硬件設(shè) 軟件設(shè) 驗(yàn) 硬件設(shè) 軟件設(shè) 驗(yàn) 第六十一章戰(zhàn)艦STM32開發(fā)板綜合實(shí) 電子數(shù)碼相 音樂(lè)應(yīng)用中 時(shí) 系統(tǒng)設(shè) FC游戲 收音 記事 運(yùn)行 手寫畫 照相 USB連 TOM 無(wú)線傳 計(jì)算 主要介紹本指南的實(shí)驗(yàn)平臺(tái);2,軟件篇,主要介紹STM32開發(fā)軟件的使用以及一些調(diào)試實(shí)現(xiàn))帶領(lǐng)大家一步步深入STM32的學(xué)習(xí)。本指南為ALIENTEK戰(zhàn)艦STM32開發(fā)板的固件庫(kù)版本配套,在開發(fā)板配套的光盤里hex文件,大家只需要通過(guò)串本指南不僅非常適合廣大學(xué)生和電子者學(xué)習(xí)STM32,其大量的實(shí)驗(yàn)以及詳細(xì)的解說(shuō),Cortex-M3ARMV7Thumb-2指令集,而且擁有很多新特性。較之內(nèi)核最先嘗蟹的兩個(gè)公司(Luminary(流明))之一,ST無(wú)論是在市場(chǎng)占有率,還是在技術(shù)支持方面,都是遠(yuǎn)超其他對(duì)手。在Cortex-M3的選擇上,STM32無(wú)疑是大家的首現(xiàn)在ST公司又推出了STM32F0系列CortexM0以及STM32F4系列Coretx 這兩種都已經(jīng)量產(chǎn),而且可以比較方便的到,但是本指南,我們只討論Cortex(因?yàn)檫@個(gè)現(xiàn)在是性價(jià)比最高的^_^)有的讀者可以自行了解一下還推出了STM32L和STM32W等超低功耗和無(wú)線應(yīng)用型的M3。SWDJTAG兩種調(diào)試口。SWD調(diào)試可以為你的設(shè)計(jì)帶來(lái)跟多的方便,只需要2個(gè)IO口,即可實(shí)現(xiàn)仿真調(diào)試?!禖ortex-M3指南》中文版(譯前者是ST針對(duì)STM32的一份通用參考資料,內(nèi)容翔實(shí),但是沒(méi)有實(shí)例,也沒(méi)有對(duì)Cortex-M3構(gòu)架進(jìn)行多少介紹(STCortex-M3熟悉者來(lái)寫的),讀者只能根據(jù)自己對(duì)書本的理解來(lái)編寫相關(guān)代碼。后者是專門介紹Cortex-M3構(gòu)架的書,有簡(jiǎn)短的STM32擁有非常多的寄存器,對(duì)于新手來(lái)說(shuō),直接操作寄存器有很大的難度,所以ST官這些實(shí)例涵蓋了STM32的絕大部分內(nèi)部資源,并且提供很多實(shí)用級(jí)別的程序,如:內(nèi)存大家只需程序到ALIENTEK戰(zhàn)艦STM32開發(fā)板,即可驗(yàn)證實(shí)驗(yàn)。STM32初學(xué)者,還是一個(gè)老手,本指南都非常適合。尤其對(duì)于初學(xué)者,本指南將手把手的教你如何使用MDK,包括新建工程、編譯、仿真、調(diào)試等一系列步驟,讓你輕松上手。本指南適用于想通過(guò)庫(kù)函數(shù)學(xué)習(xí)STM32的讀者,大家可以結(jié)合提供的庫(kù)上淘寶。當(dāng)然你如果有了一款自己的開發(fā)板,而又不想再買,也是可以的,只要你的板子上有ALIENTEKSTM32開發(fā)板上的相同資源(需要實(shí)驗(yàn)用到的),代碼一般都是可以通用的,你需要做的就只是把底層的驅(qū)動(dòng)函數(shù)(IO操作)稍做修改,使之適合你的開發(fā) (開源),大家可以在上發(fā)帖提問(wèn)。在此先向各位朋的硬件平臺(tái):ALIENTEK戰(zhàn)艦STM32開發(fā)板,通過(guò)該篇的介紹,你將了解到我們的學(xué)臺(tái)ALIENTEK戰(zhàn)艦STM32開發(fā)板的功能及特點(diǎn)。為了讓讀者更好的使用ALIENTEKSTM32開發(fā)板,本篇還介紹了開發(fā)板的一些使用本章,主要向大家簡(jiǎn)要介紹我們的實(shí)驗(yàn)平臺(tái):ALIENTEKSTM32開發(fā)板。通過(guò)本章ALIENTEKSTM32開發(fā)板之前,ALIENTEKMiniSTM32開發(fā)板,在兩年10000STM32開發(fā)板銷量之首(目前仍是銷量第一STM32MiniSTM32開發(fā)板的超級(jí)加強(qiáng)版。下面我們開始介紹戰(zhàn)艦STM32開發(fā)板。 8M STM32USB 2 WK_UP及 LED 1.1.1STM321.1.1可以看出,ALIENTEKSTM32STM32F103STM32F103的內(nèi)部資源,都可以在此開發(fā)板上驗(yàn)證,同11.2cm*15.6cm大小,板子的設(shè)計(jì)充分考慮了人性化設(shè)計(jì),并結(jié)合廣大客戶對(duì)Mini板改進(jìn)意見(jiàn),經(jīng)過(guò)反復(fù)修改(在面市之前,硬件就了8次之多,目前版本為V2.0),最終確了定這樣的設(shè)計(jì)。1個(gè)FM立體聲收發(fā)12.4G無(wú)線模塊接口1路CANTJA10501485接口,采用SP34851路RS232SP32321個(gè)PS/21路數(shù)字溫濕度傳感器接口,支持DS18B20DHT112個(gè)OLED1個(gè)USB串口,可用于程序和代碼調(diào)試(USMART調(diào)試1個(gè)USBSLAVEUSB1個(gè)RS232/RS4851個(gè)CAN/USB1個(gè)標(biāo)準(zhǔn)的JTAG/SWD調(diào)試1個(gè)VS1053IIS15V電源供應(yīng)/13.3V電源供應(yīng)/1個(gè)RTC4個(gè)功能按鈕,其中WK_UPIOIO口,可以極大的方便大家擴(kuò)展及使用。另外板載一鍵功能,可避免頻繁設(shè)置B0、B1的麻煩,僅通過(guò)1根USB線即可實(shí)現(xiàn)STM32的開發(fā)。資源充足。外擴(kuò)1M字節(jié)SRAM和8M字節(jié)FLASH,滿足大內(nèi)存需求和大數(shù)據(jù)。W25Q6464M其他用戶數(shù)據(jù),滿足大容量數(shù)據(jù)要求。當(dāng)然如果覺(jué)得8M字節(jié)還不夠用,你可以把數(shù)據(jù)存放在外部SD卡。IS62WV512168M應(yīng)用(比如GUI,就可以很好的實(shí)現(xiàn)了。就只能用SDIO模式了。P4個(gè)IO,還剩下PA9和PA10沒(méi)有在這里引出(由P6引出。A12(JTAG調(diào)試,這個(gè)JTAG口也可以用SWD模式來(lái)連接。的仿真器使用SWD模式!口。所以板載了USB串口可以方便大家代碼和調(diào)試。而在板子上并沒(méi)有直接連接在一起,ALIENTEK戰(zhàn)艦STM32USB串口,來(lái)和其他板子通信,而其他板子的串口,也可以方便地接到ALIENTEK戰(zhàn)艦STM32開USB、1個(gè)CAN、312位ADC、112DAC、1SDIO接口、1個(gè)FSMC接口以及112個(gè)通用IO口。STM32USBMiniUSB頭(USBSTM32USB通訊,通過(guò)此MiniUSB頭,開發(fā)板就可以和電腦進(jìn)行USB2個(gè)MiniUSB頭,一個(gè)用于USB轉(zhuǎn)串口,連接CH340G;另外一個(gè)用于STM32內(nèi)帶的USB。使用的方便性,以及可以給板子提供更大的電流(兩個(gè)USB都接上)這兩個(gè)因素。STM32后備區(qū)域的供電接口,可以用來(lái)給STM32的后備區(qū)域提供能量,在外部電源斷電的時(shí)候,維持后備區(qū)域數(shù)據(jù)的,以及RTC的運(yùn)行。(USB_232實(shí)現(xiàn)USB轉(zhuǎn)串口。同時(shí),此MiniUSB接頭也是開發(fā)板電源的主要提供口。分別連接2個(gè)外部模塊,從而實(shí)現(xiàn)相關(guān)實(shí)驗(yàn)。(BEEP14,1.2.1紅外這是開發(fā)板的一個(gè)復(fù)用接口(U13),該接口由4個(gè)鍍金排孔組成,可以用來(lái)接個(gè)接口,2個(gè)功能。不用的時(shí)候,大家可以拆下上面的傳感器,放到其他地方去用,使用上是2LEDDS1,DS02LEDLED來(lái)指示程序狀態(tài),是非(BOOTSTM32兩個(gè)啟動(dòng)選擇引腳,用于選擇復(fù)位后STM32的啟動(dòng)模式,作為開發(fā)板,這兩個(gè)是必須的。在(RESETSTM32的復(fù)位引腳是連接在一起的,當(dāng)按下該鍵的時(shí)候,STM32和液想設(shè)置其他參考電壓,只需要的參考電壓源接到REF-和REF+上即可。WK_UP3WK_UPWK_UPKEY0、KEY1KEY2是低電平有效,大家在(TAD6個(gè)排針,這可是本開發(fā)板設(shè)計(jì)的很巧妙的一個(gè)端口(P3P14組成),這組端口通過(guò)組合可以實(shí)現(xiàn)的功能有:ADC、DAC輸出、DAC輸出、外部音頻輸入、電容觸摸按鍵、DAC音頻、DAC音頻、DACADC自測(cè)等,所有這些,你只需要1個(gè)跳線帽的設(shè)置,就可以逐一實(shí)現(xiàn)。(MIC而通過(guò)這個(gè)LINE_IN,我們可以實(shí)現(xiàn)立體聲。P2即可。(PHONE收音機(jī)/DAC等通過(guò)74HC4052實(shí)現(xiàn)音頻選擇,輸入到TDA1308,再輸出到該音頻輸VS1053IIS其實(shí)我覺(jué)得VS1053本身的音頻DAC已經(jīng)很好了。這個(gè)接口適合發(fā)燒友使用。5V電源輸入/(2*3(VOUT2源,也可以用于從外部取5V的電源給板子供電。500ma(2*3(VOU13.3V電源而苦惱不已,ALIENTEK充分考慮到能超過(guò)500ma。(U1ADX34(±16g(DC_IN(MP2359輸入電壓建議不要超過(guò)9V!切記過(guò)12V!戰(zhàn)艦V2.0及以后的版本才支持DC6~16V的過(guò)這個(gè)天線,可以很好的實(shí)現(xiàn)FM收音和FM發(fā)射。(RS4852ABGND。這里提醒大家,RS485通信的時(shí)候,必須A接A,B接B。否則可能通信不正常!IORS232RS485P9RS232還是RS485RS232到TTL串口的轉(zhuǎn)換,又可以充當(dāng)RS485TTL485的轉(zhuǎn)換。(注意,這里的TTL高電平是3.3V)COM24C02(U15這是開發(fā)板板載的一個(gè)標(biāo)準(zhǔn)PS/2母頭(PS/2PS/2設(shè)備。PS/22IO口,就可以擴(kuò)展一個(gè)鍵盤,所以大家不必要對(duì)板上只9針游戲手柄接口(JOY_ADFC手柄(紅白機(jī)/STM32OLED模LCD模塊,則靠右側(cè)插。OLEDALIENTEK的單色/雙色OLED模塊。LCD模塊則支持ALIENTEK2.4/2.8/3.5LCD模塊,并且支持觸摸屏功能。(CAN2CANHCANLGND。這里提醒大家,CAN通信的時(shí)候,必須CANH接CANH,CANL接CANL。否則可能通信不正常!從而使得我們板子具備了無(wú)線功能,但是這里需要22個(gè)開發(fā)板同時(shí)工作才可以。如上面我們?cè)敿?xì)介紹了ALIENTEK戰(zhàn)艦STM32開發(fā)板的硬件資源。接下來(lái),向大家簡(jiǎn)要介紹一下戰(zhàn)艦STM32開發(fā)板的軟件資源。123456123456789ALIENTEK戰(zhàn)艦STM32從上表可以看出,ALIENTEKSTM32STM32F103ZET6的所有內(nèi)部資源,并且外擴(kuò)展了很多有價(jià)值的例程,比如:FLASHEEPROM實(shí)驗(yàn)、IAP深入,從簡(jiǎn)單到復(fù)雜,有利于大家的學(xué)習(xí)和掌握。所以,ALIENTEKSTM32開發(fā)板是非ALIENTEKSTM32開發(fā)板更像強(qiáng)悍性能。解決了一部分人,STM32能干啥的顧慮。ALIENTEK戰(zhàn)艦STM32開發(fā)板選擇的是STM32F103ZETT6作為MCU,該是STM32F103里面配置非常強(qiáng)大的了,它擁有的資源包括:64KBSRAM、512KBFLASH、2個(gè)基本定時(shí)器、4個(gè)通用定時(shí)器、2個(gè)高級(jí)定時(shí)器、3SPI、2IIC、5個(gè)串口、1USB、1FSMCLCD,可以顯著提高LCD的刷屏速度,更重要的是其價(jià)格,23元左右的零售價(jià),足以秒殺很多其他了。所以我們選擇了它作為我們的主。MCU部分的原理圖如圖(請(qǐng)大家打開開發(fā)板光盤的原理圖查看清晰版本)所示:MCU部分原理圖上圖中U5為我們的主:STM32F103ZET6。1VBAT腳的供電采用CR1220紐扣電池和VCC3.3混合供電的方式,在VC3.給其供電。這樣,VBAT總是有電的,以保證RTC的走時(shí)以及后備寄存器的內(nèi)容不丟失。2,圖中的R37和R38用MCU部分和外部的電源,這樣的設(shè)計(jì)主要是考慮了后期維3,圖中P73.3V作為參考電壓,如果大家想用自己的參考電壓,則的參考電壓接入VREF-和VREF+即可。IO圖中P4和P5MCUIOIO54108IO從IOPA9PA10IOIO引出口,方便的擴(kuò)展自己的外設(shè)。(PA9和PA10通過(guò)P6引出)ALIENTEKSTM32USBSTM32F103ZET6P6連接起來(lái)的,如圖所示:、STM32F103ZET6的串口通信了。同時(shí),P6PA9和PA10的引出口。連接你的設(shè)備,把我們的開發(fā)板當(dāng)成USB串口用了。跟線(SWCLK和SWDIO)就可以并調(diào)試代碼了,這同我們使用串口代碼差不多,而且速度非???,能調(diào)試。所以建議大家在設(shè)計(jì)產(chǎn)品的時(shí)候,可以留出SWD來(lái)調(diào)試代碼,JTAG。STM32SWDJTAGJTAGSWDULINK2STLINK等都支持SWD調(diào)試。ALIENTEK戰(zhàn)艦STM32開發(fā)板外擴(kuò)了1M字節(jié)的SRAM,如圖所示,注意圖外擴(kuò)場(chǎng)合,戰(zhàn)艦STM32開發(fā)板也可以勝任。圖中TFT_LCDOLEDOLED顯示模塊供電的接口,它和TFT_LCD2.4寸/2.8寸/3.5LCD時(shí),我們接到TFT_LCD上就可以了(靠右插)ALIENTEK的OLED模塊時(shí),則接的連接。TFTLCDSTM32F103ZET6FSMCSTM32開發(fā)板,這樣可以顯著提高LCD刷屏速度。T_MISO/T_MOSI/T_PEN/T_CS/T_CS用來(lái)實(shí)現(xiàn)對(duì)液晶觸摸屏的控制。LCD_BL則LCDRESETMCU共用鈕不僅可以用來(lái)復(fù)位MCU,還可以復(fù)位LCD。1OOT置都可以。這里ALIENTEK戰(zhàn)艦STM32開發(fā)板專門設(shè)計(jì)了一鍵電路,通過(guò)串口的DTRRS232因?yàn)镽S232電平不能直接連接到STM32,所以需要一個(gè)電平轉(zhuǎn)換。這里我們選擇的USART2_TX/USART2_RX連接在MCU的串口2上(PA2/PA3),所以這里的RS232/RS4852來(lái)實(shí)現(xiàn)的。圖中RS485_TXRS485_RXSP3485的DI和RO信號(hào)上。P9RS232電平連接戰(zhàn)艦STM32開發(fā)板的P9端口,就可以讓你的板擁有RS232/RS485的功能。RS485485電平轉(zhuǎn)換,其中R45RS485_RX/RS485_TX連接在P9上面,通過(guò)P9跳線來(lái)選擇是否連接在MCU上面,ALIENTEKSTM32CANSTM32USBCAN共用這組信號(hào),所以我們通過(guò)P13來(lái)選擇使用USBCANUSB端子還具有供電功能,VUSBUSB供電口,通過(guò)這個(gè)USB口,就普通應(yīng)用來(lái)說(shuō)是足夠了的。當(dāng)然,你也可以選擇換大的,因?yàn)槲覀兊碾娐吩谠砩鲜羌嫒?4C02~24C512全系列EEPROM的。A0~A224C020了,寫程序的時(shí)候要注意這點(diǎn)。IIC_SCLMCU的PB10上,IIC_SDAMCU的PB11上,這里我們雖然慎使用。IIC_SCL/IIC_SDA3個(gè)器件:24C02、ADXL345RDA5820FC游戲機(jī)(俗稱紅白機(jī)/小霸王游戲機(jī))99針的串口里面。這里我們使用一個(gè)DB9來(lái)做FC游戲手柄接口。JOY_CLK/JOY_LAT/JOY_DAT分別連接在MCU的PC12/PC8/PC93個(gè)信號(hào)和SDIOSCK/D0/D1共用,所以他們不能同時(shí)使用!這里特別提醒DB92,3腳直接接SPISPIFLASHSPIFLASH型號(hào)為W25Q64,該的容量為64Mb,也就是8M字節(jié)。該和SDSPI(SPI2圖中F_CS連接在MCU的PB12SPI2_SCK/SPI2_MOSI/SPI2_MISO則分別連接在MCU的PB13/PB15/PB14上。同24C02一樣,該的IIC_SCL和IIC_SDA同樣是掛在PB10和PB11上,他們共個(gè)IIC總線。DS18B20/DS1820/DHT11等單總線數(shù)字溫濕度傳感器。1WIRE_DQ是傳感器的數(shù)據(jù)線,該信號(hào)連接在MCU的PG11上。就可以用紅外來(lái)控制開發(fā)板了。REMOTE_IN為紅外接收頭的輸出信號(hào),該信號(hào)連接在MCU的PB9上。NRF24L012.4G無(wú)線模塊,從而實(shí)現(xiàn)開發(fā)板與其他設(shè)備的無(wú)線數(shù)據(jù)傳輸(注意:NRF24L01不能和藍(lán)牙/WIFI連接。NRF24L01無(wú)線模塊的最大傳輸速度可以達(dá)到2Mbps,傳輸距離最大可以到30米左右(空曠地,無(wú)干擾。SPIFLASHPWR是系統(tǒng)電源指示燈,為藍(lán)色。LED0LED1PB5PE5上。為了方便大家判斷,我們選擇了DS0為紅色的LED,DS1為綠色的LED。使用外部上拉電阻,但是STM32IO作為輸入的時(shí)候,可以設(shè)置上下拉電阻,所以我們使用STM32的內(nèi)部上拉電阻來(lái)為按鍵提供上拉。WK_UP按鍵連接到PA0(STM32WKUP引腳),它除了可以用作普通輸入按鍵外,還可以用作STM32的喚醒輸入。這個(gè)按鍵是高電平觸發(fā)的。5.1M是電容充電電阻,TPADMCUPS/2ALIENTEK戰(zhàn)艦STM32開發(fā)板的輸入。PS_CLK和PS_DAT分別接PC11和PC10,PS/2的STM32PS/2SDIO_D2和SDIO_D3公用了IO口,所以他們不能同時(shí)工作。圖中P8是接口可以用來(lái)連接ALIENTEKOLED模塊或者ALIENTEK頭模塊。如果是OLED模塊,則FIFO_WEN和OV_VSYNC不需要接(在板上靠左插即可如果是頭其中,OV_SCL/OV_SDA/FIFO_WRST/FIFO_RRST/FIFO_OE這5個(gè)信號(hào)是分別連接在MCUPD3/PG13/PD6/PG14/PG15上面,OV_D0~OV_D7PC0~7上面(放在連續(xù)的IO上,可以提高讀寫效率,IO_RCK/IO_WEN/OV_VSYNC3個(gè)信號(hào)是分別連接在MCUPB4/PB3/PA8PB3PB4JTAGJTRST/JTDO信號(hào),所以在使用OV7670JTAG仿真,要選擇SWD模式(SWD模式有源蜂鳴器是指自帶了震蕩電路的蜂鳴器,這種蜂鳴器一接上電就會(huì)自己震蕩。而如圖中Q1是用來(lái)擴(kuò)流,R60則是一個(gè)下拉電阻,避免MCU復(fù)位的時(shí)候,蜂鳴器可能的現(xiàn)象。BEEPMCUPB8上面,PB8可以做輸出,所以大家如果想玩高級(jí)點(diǎn)(如:控制蜂鳴器“唱歌就可以使用來(lái)控制蜂鳴器。ALIENTEKSTM32SD卡(大卡/相機(jī)卡)接口,但是并沒(méi)有板載以太網(wǎng),不過(guò)我們板載了以太網(wǎng)模塊接口,通過(guò)外部模塊擴(kuò)展以太網(wǎng),其原理圖如圖PCBP10/P11/P12SD卡接口方式選擇接口,可以用SDSDIOSPIP12兼具以太網(wǎng)模塊接口功能實(shí)現(xiàn)以太網(wǎng)與開發(fā)板的連接SD_CS信號(hào)外,其余信號(hào)都是使用SDIOPS/2設(shè)備將不能使用。SD_SCKSD_CMD則分別連PC12PD2SD_CSSD_CMDPD2SD_CS則是網(wǎng)INTINTSD卡可以同時(shí)工作,而當(dāng)要INT的時(shí)候,SD卡將不能和網(wǎng)絡(luò)模塊一起使用,這點(diǎn)大家在使用上要稍加注意。P12的其余其原理圖如圖所示:我們?cè)賮?lái)看看P3,_DAC連接在MCU的PB6,是定時(shí)器4的通道1輸出,后面跟一流信號(hào)了。_AUDIO是一個(gè)音頻輸入通道,它連接到74HC4052,再進(jìn)入到TDA1308進(jìn)圖中AIN是_AUDIO,PDC是濾波后的_DAC信號(hào)。下面我們來(lái)看看通過(guò)1個(gè)當(dāng)不用跳線帽的時(shí)候:1,AINGND組成一個(gè)音頻輸入通道。2,PDCGND組成一個(gè)_DAC輸出;3,DACGNDDAC輸出/ADC輸入(DAC腳也剛好也;4,ADC當(dāng)使用1個(gè)跳線帽的時(shí)候:1,AIN和PDC組成一個(gè)MCU的音頻輸出通道,實(shí)現(xiàn) 音樂(lè)。2,AIN和DAC同樣可以組成一個(gè)MCU的音頻輸出通道,也可以用來(lái)音樂(lè)。3,DAC和ADC組成一個(gè)自輸出測(cè)試,用MCU的ADC來(lái)測(cè)試MCU的DAC輸出。4,PDC和ADC,組成另外一個(gè)子輸出測(cè)試,用MCU的ADC來(lái)測(cè)試MCU的 DAC輸出。5,ADC和TPAD,組成一個(gè)觸摸按鍵輸入通道,實(shí)現(xiàn)MCU的觸摸按鍵功能。ALIENTEKSTM32開發(fā)板板載了多個(gè)音頻輸出設(shè)備,所以需要一個(gè)音頻選擇電路,74HC4052MP3_LEFT/MP3_RIGHTVS1053的音頻輸出端。RADIO_LRADIO_R是OUTLOUTRRDA5820的音頻輸入端,所以開發(fā)板的所有聲音,其實(shí)都可以通過(guò)FM發(fā)射出去,大家可以在收音機(jī)里面聽到來(lái)自開發(fā)板。_AUDIO則是來(lái)自外部音源輸入(USB聲卡實(shí)驗(yàn),就需要用到這個(gè)通道。ASEL_AASEL_B直接連接在MCU的PD7PB7上面,用來(lái)控制74HC4052的通道選擇。FMRDA5820是一顆立體聲FM收發(fā),該通過(guò)IIC接口控制,可以實(shí)現(xiàn)OUTLOUTRFM發(fā)射的音頻輸入信號(hào),RADIO_LRADIO_RFM接收的PB10和PB11上,他們共個(gè)IIC總線。圖中的TDA1308是AB類的數(shù)字音頻(CD)耳機(jī)功放IC。其具有低電壓、低失真、高TDA2822、TDA7050、LM386等“經(jīng)典”功放望塵莫及的。同時(shí)戰(zhàn)艦STM32開發(fā)板搭載了效果一流的VS1053編,所以,戰(zhàn)艦STM32開發(fā)VS1053是一顆單片OGG/MP3/AAC/WMA/MIDI音頻器,通過(guò)plugin可以實(shí)現(xiàn)FLAC的,同時(shí)該可以支持IMAADPCM編碼,通過(guò)plugin可以實(shí)現(xiàn)OGG編碼。相比它的前輩:VS1003,VS1053性能提升了不少,比如支持OGG編,支持FLAC,同時(shí)音IIS接口(P1),通過(guò)這個(gè)接口,大家可以在外部接自己的DAC,以達(dá)到更好的音質(zhì)。圖中P2是MIC選擇接口,這個(gè)接口主要在大家選擇使用LINE_IN的時(shí)候,需要用到,斷開P2,就可以排除MIC對(duì)LINE_IN的干擾,從而達(dá)到更好的效果。默認(rèn)我們是用跳線帽短接P2的。MP3音源。TP1/TP2/TP33個(gè)測(cè)試點(diǎn),用于測(cè)試。VS10537MCU,VS_MISO/VS_MOSI/VS_SCK/VS_XCS/VS_XDCS/VS_DREQ/VS_RST這7根線分別連接到MCU的PA6/PA7/PA5/PF7/PF6/PC13/PE6上,VS1053通過(guò)STM32的SPI1。UUU開發(fā)板。K1為開發(fā)板的總電源開關(guān),F(xiàn)1為500ma自恢復(fù)絲,用于保護(hù)電源。U16為3.3V穩(wěn)壓,給開發(fā)板提供3.3V電源,而U19則是1.8V穩(wěn)壓,供VS1053的CVDD使用。這里還有USB供電部分沒(méi)有列出來(lái),其中VUSB就是來(lái)自USB供電部分,在相應(yīng)500maUSBCH340G的低電平復(fù)位,RTS高電平進(jìn)BootLoader。就可以一鍵代碼了,而不需要手動(dòng)設(shè)置B0和按復(fù)位了。其中,RESET是開發(fā)板的復(fù)位信號(hào),BOOT0B0信號(hào)。USB_232自電腦USB的電源,USB_232是本開發(fā)板的主要供電口。為了讓大家更好的使用ALIENTEKSTM32開發(fā)板,我們?cè)谶@里總結(jié)該開發(fā)板使用的2,雖說(shuō)開發(fā)板有500mA自恢復(fù)絲,但是由于自恢復(fù)絲是慢動(dòng)作器件,所以在給外部供電的時(shí)候,還是請(qǐng)大家一點(diǎn),不要超過(guò)這個(gè)限額,以免引起不必要的問(wèn)題/W25Q641SPI器件是被選中的(CS為低這兩個(gè)模塊的時(shí)候,請(qǐng)大家選擇SWD模式,其實(shí)最好就是一直用SWD模式。接了蜂鳴器,如果你輸出高電平就會(huì)聽到蜂鳴器的了。行,可以通過(guò)串口看看LCDID是否正常,再做進(jìn)一步的分析。82個(gè)DB9接口,但是請(qǐng)?zhí)貏e注意,只有COM這個(gè)接口(PS/2右側(cè)的)可以JOY_PAD這個(gè)接口(PS/2左側(cè))是用來(lái)接手柄的,不能接串口,否則可能把STM32給燒了!請(qǐng)大家一定要注意這個(gè)問(wèn)題??!至此,本指南的實(shí)驗(yàn)平臺(tái)(ALIENTEK戰(zhàn)艦STM32開發(fā)板)的硬件部分就介紹完了,可以在技術(shù)到,大家可以經(jīng)常去這個(gè) 過(guò)該篇的學(xué)習(xí),你將了解到:1、如何在RVMDK下新建STM32工程;2、工程的編譯;3、RVMDK的一些使用技巧;4、軟件仿真;5、程序;6、調(diào)試;以上幾個(gè)環(huán)節(jié)概括了了一個(gè)完整的STM32開發(fā)流程。本篇將圖文并茂的向大家介紹以上幾個(gè)方面,通過(guò)本篇的學(xué)習(xí),希望大家能掌握STM32的開發(fā)流程,并能獨(dú)立開始STM32的編程和學(xué)習(xí)。STM32固件庫(kù)V3.5文件包:STM32F10x_StdPeriph_Lib_V3.5.0 :軟件資料\STM32固件庫(kù)使用參考資料\ :軟件資料\STM32固件庫(kù)使用參考資料\ :STM32參考資料/STM32中文參考手冊(cè)_V10.pdf :STM32參考資料/Cortex-M3指南(中文).pdf 本章將向大家介紹RVMDK軟件的使用,ST固件庫(kù)介紹,同時(shí)還介紹怎樣建一個(gè)基程,最后本章還將向大家介紹RVMDK軟件的一些使用技巧,希望大家在本章之后,能夠?qū)VMDK這個(gè)軟件有個(gè)比較全面的了解。,RVMDK3.80A冊(cè)。這一節(jié)的知識(shí)可以參考《STM32固件庫(kù)使用手冊(cè)中文翻譯版》P32,固件庫(kù)手冊(cè)講解更加51STM3251單片機(jī)的寄存器開發(fā)方式,突然一個(gè)ST庫(kù)擺在面前會(huì)一頭霧水,不知道從何下手。下面STM32固件庫(kù)到底是什么,和寄存器開發(fā)有什么關(guān)系?其實(shí)一句(API GPIOx->BRR= {}任何處理器,不管它有高級(jí),歸根結(jié)底都是要對(duì)處理器的寄存器進(jìn)行操作。但是固STM32的原理,而這些原理了解了,你在進(jìn)行固件庫(kù)開發(fā)過(guò)程中才可能得心應(yīng)手游刃就涉及到一個(gè)CMSIS標(biāo)準(zhǔn)的基礎(chǔ)知識(shí),這部分知識(shí)可以從《Cortex-M3指南》中了解到,是什么關(guān)系這樣的問(wèn)題,其實(shí)ARM是一個(gè)做標(biāo)準(zhǔn)的公司,它負(fù)責(zé)的是內(nèi)核的架構(gòu)設(shè)計(jì),而TI,ST這樣的公司,他們并不做標(biāo)準(zhǔn),他們是公司,他們是根據(jù)ARM公司提供的內(nèi)核自己的。所以,任何一個(gè)做Cortex-M3,他們的內(nèi)核結(jié)構(gòu)都是一樣的,不同的是他們的器容量,片上外設(shè),IO以及其他模塊的區(qū)別。所以你會(huì)發(fā)現(xiàn),不同公司設(shè)計(jì)的Cortex-M3他們的端口數(shù)量,串口數(shù)量,控制方法這些都是有區(qū)別的,這些資源他們可以根據(jù)自己的需求理念來(lái)設(shè)計(jì)。同一家公司設(shè)計(jì)的多種Cortex-m3內(nèi)核的片上外設(shè)STM32F103RBTSTM32F103ZET,他們的片上外設(shè)就有很大的區(qū)別。我們可以通過(guò)《Cortex-M3指南》中的一個(gè)圖來(lái)了解一下:Cortex-M3ARM公司為了能讓不同的公司生產(chǎn)的Cortex-M3能在軟件上基本兼容,和生產(chǎn)商共同提出了一套標(biāo)準(zhǔn)CMSIS標(biāo)準(zhǔn)(CortexMicrocontrollerSoftwareInterfaceStandard翻譯過(guò)來(lái)是“ARMCortex?微控制器軟件接口標(biāo)準(zhǔn)”。ST庫(kù)就是根據(jù)這套的。這里我們又要參考資料里面的來(lái)看看基于CMSIS應(yīng)用程序基本結(jié)構(gòu):基于CMSIS中間件層:定義中間件的通用API,也是ARM公司提供函數(shù)必須按照CMSIS這套規(guī)范來(lái)設(shè)計(jì)。其實(shí)不用這么講這么復(fù)雜的,一個(gè)簡(jiǎn)單的例子,我們?cè)谑褂肧TM32的時(shí)候首先要進(jìn)行系統(tǒng)初始化,CMSIS規(guī)范就規(guī)定,系統(tǒng)初始化函數(shù)名字必須為SystemInit,所以各個(gè)公司寫自己的庫(kù)函數(shù)的時(shí)候就必須用SystemInit對(duì)系統(tǒng)進(jìn)行初始化。CMSIS還對(duì)各個(gè)外設(shè)驅(qū)動(dòng)文件的文件名字規(guī)范化,以及函數(shù)名字規(guī)范化等等一系列規(guī)定。上一節(jié)講的函數(shù)GPIO_ResetBits這個(gè)函數(shù)名字也是不能隨便定義的,是要遵循CMSIS規(guī)范的。至于CMSIS的具體內(nèi)容就不必多講了,需要了解詳細(xì)的朋友可以到網(wǎng)上搜索資料,相用的是V3.5版本的固件庫(kù) :軟件資料\STM32固件庫(kù)使用參考資料\STM32F10x_StdPeriph_Lib_V3.5.0下面查看,這在我們有。下面看看庫(kù)包的 LibrariesCMSISSTM32F10x_StdPeriph_Driver兩個(gè),這兩個(gè)包ISTM32F10x_StdPeriph_DriverSTM32固件庫(kù)源碼文件。源文件下面的inc存放stm32f10x_xxx.h頭文件,無(wú)需改動(dòng)。srcstm32f10x_xxx.c格式的固件庫(kù)源碼文件。每一個(gè).c文件和一個(gè)相應(yīng)的.h文件對(duì)應(yīng)。這里的文件也是固件庫(kù)的文件,每個(gè)外存放的ST提供的固件實(shí)例源碼,在以后的開發(fā)過(guò)程中,可以參考修改這個(gè)提供的實(shí)例來(lái)快速驅(qū)動(dòng)自己的外設(shè),很多開發(fā)板的實(shí)例都參考了提供的例程源碼,這些源碼對(duì)以后的學(xué)習(xí)非常重要。STM32F10x_StdPeriph_Temte文件夾下面存放的是工程模板。根中還有一個(gè)stm32f10x_stdperiph_lib_um.文件,直接打開可以知道,這是一個(gè)固Librariescore_cm3.ccore_cm3.h文件位于\Libraries\CMSIS\CM3\CoreSupport下面的,這個(gè)就是CMSIS文件,提供進(jìn)入M3內(nèi)核接口,這是ARM公司提供,對(duì)所有CM3內(nèi)核的DeviceSupport\ST\STM32F10x這個(gè)下面有三個(gè)文件:system_stm32f10x.c,system_stm32f10x.hstm32f10x.h文件。其system_stm32f10x.csystem_stm32f10x.h文件的功能是設(shè)置系統(tǒng)以及總線時(shí)stm32f10x.hSTM32開發(fā),你幾乎時(shí)刻都要查看這個(gè)文的,我們?cè)诤竺娴恼鹿?jié)“MDK中寄存器地址名稱映射分析”中會(huì)講到。DeviceSupport\ST\STM32F10xstartup文件夾,這個(gè)文件夾里面放的文件顧名思義是啟動(dòng)文件。在\startup\arm下,我們可以看到8startup開頭的.s文件。startup要是用其中3個(gè)啟動(dòng)文件: 適用于小容量產(chǎn)品startup_stm32f10x_md.s:適用于中等容量產(chǎn)品 我們ALIENTEKSTM32103ZET6是屬于大容量產(chǎn)品,所以我們的啟動(dòng)文件選擇startup_stm32f10x_hd.s,而我們的mini板子采用的103RBT6是中等容量,所以選擇startup_stm32f10x_md.s啟動(dòng)文件。;Resetmain;ResetmainR0,=首先要調(diào)用SystemInit系統(tǒng)初始化函數(shù)。stm32f10x_it.c,stm32f10x_it.hstm32f10x_conf.h等文件,這里就不V3.5環(huán)境與RealView編譯器。支持ARM7、ARM9和的Cortex-M3核處理器,自動(dòng)配置啟動(dòng)具包ADS1.2相比,RealView編譯器具有代更小、性能更高的優(yōu)點(diǎn),RealView編譯器與ADS.2代碼密度:比ADS1.2編譯的代碼尺寸小10%;代碼性能:比ADS1.220%;目前RVMDK的版本是RVMDK4.6,4.0以上的版本的RVMDK對(duì)IDE界面進(jìn)行了很大改變,并且支持Cortex-M0內(nèi)核的處理器。作者曾用過(guò)RVMDK3.24/3.80A/4.10等幾個(gè)版本,并對(duì)他們進(jìn)行了一些簡(jiǎn)單的對(duì)比,從對(duì)比情況來(lái)看:3.243.80a在各方面的比較都差不多,3.80A4.10確實(shí)界面是好了,支持的器件,4速度進(jìn)行-O2優(yōu)化才能和3.24/3.80A的普通級(jí)別相比。另外,國(guó)內(nèi)大都數(shù)單片機(jī)工程師都接觸的編譯器界面和KEILKEIL的朋友來(lái)說(shuō),更容易上手?;谝陨蠋c(diǎn),本書將選擇RVMDK3.80A版本的編譯器作為學(xué)習(xí)STM32的軟件。當(dāng)然大家也可以根據(jù)自己的喜好換用4.10或以上版本的軟件(注意版本的MDK可能將你的山寨JLINK刷成磚頭,請(qǐng)面的章節(jié)我們介紹了STM32庫(kù)包的一些知識(shí),這些著重講解建立基于固 軟件資料\STM32固件庫(kù)使用參考資料\STM32F10x_StdPeriph_Lib_V3.5.0 MDK3.8a開發(fā)環(huán)境(我們的板子的開發(fā)環(huán)境目前是使用這個(gè)版本)。這在我們光盤 MDK機(jī),這在我們光盤的MDK同一 找到MDK的安裝文件并點(diǎn)擊圖標(biāo),這是MDK的安裝文件,和安裝其他軟件一信息其實(shí)沒(méi)啥要求,可以隨意填寫,然后點(diǎn)擊Next。LicenseKey添加到MDK里面去。詳細(xì)步驟后面會(huì)一一介紹?!癓PC2129simulator”的默認(rèn)Project,暫時(shí)我們可以不用理會(huì)。點(diǎn)擊:File->LicenseManagement,彈出一個(gè)LicenseManagement界面,copy界面中的 MDK安裝包放在同一下面???。到此LicenseKey便添加完成?;氐?點(diǎn)擊Keil的菜單:Project–>NewUvisionProject,然后 Temte之下,在這個(gè)下面建立子文件夾USER(我們的代碼工程文件都是放在,很多人喜歡新建“Project”放在下面,這也是可以的,這個(gè)就看個(gè)人喜好了),USERUSER文件夾下面。工程命名為接下來(lái)會(huì)出現(xiàn)一個(gè)選擇Device的界面,就是選擇我們的型號(hào),這里我們定位到STMicroelectronics下面的STM32F103ZE(針對(duì)我們的戰(zhàn)艦板子是這個(gè)型號(hào),如果是其他芯現(xiàn)在我們看看 接下來(lái),我們?cè)赥emte工程目錄下面,新建3個(gè)文件夾CORE,OBJ以及USERmain.c,以及其他包括system_stm32f10x.c等等。 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面, src存放的是固件庫(kù)的.c文件,inc存放的是對(duì)應(yīng)的.h文件,您不妨打開這兩個(gè)文件 下里面的文件,每個(gè)外設(shè)對(duì)應(yīng)一個(gè).c文件和一個(gè).h頭文件。 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupportcore_cm3.c和文件core_cm3.h復(fù)制到CORE下面去。然后定位到目錄rm下面,將里面startup_stm32f10x_hd.s文件到CORE下面。這里我們我之前已經(jīng)解釋了不同容量的使用不同的啟動(dòng)文件,我們的STM32F103ZET6是大容量,所以選擇 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Temte下面的4個(gè)文main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h到USER下面圖 前面10個(gè)步驟,需要的固件庫(kù)相關(guān)文件到了我們的工程 些文件加入我們的工去。Target1,選擇ManageComponentsProjectTargets一欄,Target名字修改為Temte,然后在Groups一欄刪掉一個(gè)SourceGroup1Groups:USER,CORE,FWLIBOKTarget名字以及Groups情況。下面我們往Group里面添們需要的文件。我們按照步驟12的方法,點(diǎn)擊選擇FWLIBAddFiles,可以看到Files列表下面包含我們添加的文件。用同樣的方法,將GroupsCORE和USER我們的CORE下面需要添加的文件為core_cm3.c,startup_stm32f10x_hd.s,USER 方法是點(diǎn)擊魔術(shù)棒,然后選擇“Output”選項(xiàng)下面的“Selectfolderforobjects…”,然后選 下面我們要告訴MDK,在哪些路徑之下搜索需要的頭文件,也就是頭文件 程主菜單,點(diǎn)擊魔術(shù)棒,出來(lái)一個(gè)菜單,然后點(diǎn)擊c/c++選項(xiàng).然后點(diǎn)擊IncludePaths右邊的按鈕。彈出一個(gè)添加path的框,然后圖上面的3個(gè) keil只會(huì)在一級(jí) ,記得path一定要定位到最后一級(jí) 。然后點(diǎn)擊#if!defined(STM32F10X_LD)#if!defined(STM32F10X_LD)&&!defined(STM32F10X_LD_VL)&&!defined(STM32F10X_MD)&&!defined(STM32F10X_MD_VL)&&!defined(STM32F10X_HD)&&!defined(STM32F10X_HD_VL)&&!defined(STM32F10X_XL)&&!defined(STM32F10X_CL) #error"PleaseselectfirstthetargetSTM32F10xdeviceusedinyourapplication(instm32f10xh3.5版本的庫(kù)函數(shù)在配置和選擇外設(shè)的時(shí)候通過(guò)宏定義來(lái)選擇的,所以我們需要配置一個(gè)全局的宏定義變量。按照步驟16,定位到c/c++界面,然后填寫“STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define輸入框里面。量修改為STM32F10X_LD.然后點(diǎn)擊OK。voidDelay(u32{u32}int{ voidDelay(u32{u32}int{ RCC_APB2Periph_GPIOE,ENABLE); //使能PB,PE端口時(shí)鐘GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //LED0-->PB.5端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度為50MHzGPIO_Init(GPIOB,&GPIO_InitStructure); //初始化GPIOB.5 //PB.5= {//PE.5 }}hex文件。同樣點(diǎn)擊魔術(shù)棒,進(jìn)入配置菜單,選擇OutputCreateHEXfile是編hex文件,BrowserInformation是可以查看變量和函數(shù)定義。還有就是我們要選擇hex文件和項(xiàng)目中間文件放在哪個(gè),點(diǎn)擊“SelectfolderforObjects…”定位目錄,我們的選擇定位到上面建立的OBJ下面。 mcu實(shí)際上經(jīng)過(guò)前面21個(gè)步驟,我們的工程模板已經(jīng)建立完成。但是在我們ALIENTEK提供的實(shí)驗(yàn)中,每個(gè)實(shí)驗(yàn)都有一個(gè)SYSTEM文件夾,下面有3個(gè)子 件夾,比如我們打開實(shí)驗(yàn)1的工程 可以看到有一個(gè)SYSTEM文件夾,進(jìn)入SYSTEM文件夾,里面有三個(gè)子文件夾分別為delay,sys,usart,每個(gè)子文件夾下面都有相應(yīng)的.c文件和.h文件。我們接下來(lái)要將這三個(gè)下用我們之前講解步驟13的辦法,在工新建一個(gè)組,命名為SYSTEM,然后加入這三個(gè)文件夾下面的.c文件分別為sys.c,delay.c,usart.c,如下圖: (sys,usart,delay)加入到PATH中去,因?yàn)槊總€(gè) 應(yīng)的.h頭文件,這請(qǐng)參考步驟17即可,加入后的截圖是:OK。這樣我們的工程模板就徹底完成了。我們建立好的工程模板在我們光盤的實(shí)驗(yàn)里面有,名字為“實(shí)驗(yàn)0Temte工程模板”大家可以打開對(duì)照一下。上一節(jié),我們學(xué)會(huì)了如何在MDK下創(chuàng)建STM32工程。本節(jié),向讀者介紹STM32你將了解到:1、STM32的程序;2、STM32在MDK下的軟件仿真;3、利用JLINK對(duì)STM32進(jìn)行調(diào)試。MDK的一個(gè)強(qiáng)大的功能就是提供軟件仿真,通過(guò)軟件仿真,我們可以發(fā)現(xiàn)很多將要出現(xiàn)的問(wèn)題,避免了到STM32里面來(lái)查這些錯(cuò)誤,這樣最大的好處是能很方便的檢查程序存MDK的仿真下面,你可以查看很多硬件相關(guān)的寄存器,通過(guò)觀察這些寄存器,你可以知道代碼是不是真正有效。另外一個(gè)優(yōu)點(diǎn)是不必頻繁的刷機(jī),從而延長(zhǎng)了STM32的FLASH(STM32的FLASH≥1W次。當(dāng)然,軟件仿真不是萬(wàn)能的,很多問(wèn)題還#include"delay.h"#include"usart.h"intmain(void){u8t=0;{#include"delay.h"#include"usart.h"intmain(void){u8t=0;{}}IDE里面點(diǎn)擊,確定Target選項(xiàng)卡內(nèi)容如圖所示(主要檢查型號(hào)和晶振頻率,其他的一般默認(rèn)就可以:件環(huán)境了,接下來(lái),我們?cè)冱c(diǎn)擊Debug選項(xiàng)卡,設(shè)置為如圖所示:這項(xiàng)之后,我們便可以選擇OK,退出OptionsforTarget框了。,可以發(fā)現(xiàn),多出了一個(gè)工具條,這就是Debug工具條,這個(gè)工具條在我們仿真的時(shí)候是非常有用的,下面簡(jiǎn)單介紹一下Debug工具條相關(guān)按鈕的功能。Debug工具條部分按鈕的功能如圖所示:就可以觀察這些IO口的電平變化情況,以多種形式顯示出來(lái),比較直觀。Debug工具條上的其他幾個(gè)按鈕用的比較少,我們這里就不介紹了。以上介紹的是比較常用的,當(dāng)然也不是每次都用得著這么多,具體看你程序調(diào)試的時(shí)候有沒(méi)有必要這些東西,窗口的位置,如圖所示:消 我們現(xiàn)在先不忙著往下執(zhí)行,點(diǎn)擊菜單欄的Peripherals->USARTs->USART1??梢钥吹?,有很多外設(shè)可以查看,這里我們查看的是串口1的情況。如圖所示:3.4.(b然后我們繼續(xù)單擊按鈕,一步步執(zhí)行,最后就會(huì)看到在USART#1中打印出相關(guān)的信息,如圖所示:11打印出來(lái)的,證明我們的仿真是通過(guò)的,代碼運(yùn)行時(shí)會(huì)在到,如圖0所示。并且t自增,與我們預(yù)期的一致。再次按下結(jié)束仿真0STM32的程序有多種方法:USB、串口、JTAG、SWD等,這幾種方式,都可以用來(lái)給STM32代碼。不過(guò),我們最常用的,最經(jīng)濟(jì)的,就是通過(guò)串口給STM32代碼。本節(jié),向大家介紹,如何利用串口給STM32代碼。STM32的串口一般是通過(guò)串口1的,本指南的實(shí)驗(yàn)平臺(tái)ALIENTEK戰(zhàn)艦STM32開發(fā)板,不是通過(guò)RS232串口的,而是通過(guò)自帶的USB串口來(lái)??雌饋?lái)像是USB下載(只需一根USB線,并不需要串口線)的,實(shí)際上,是通過(guò)USB轉(zhuǎn)成串口,然后再的。PA(RXD)CH340GMCU1連接上了。這里由于ALIENTEK這款開發(fā)板自帶了一鍵電路,所以我們并不需要去關(guān)心BOOT0和BOOT1的圖開發(fā)板串口跳線設(shè)1B0接V3.3(保持B1GND) B0GND,然后再按一次復(fù)位,才會(huì)開始運(yùn)行你剛剛的代碼。所以整個(gè)過(guò)程,你得跳動(dòng)2次跳線帽,還得按2次復(fù)位,比較繁瑣。而我們的一鍵電路,則利用串口的DTR和RTS信號(hào),分別控制STM32這樣,B0和STM32的復(fù)位,完全可以由軟件自動(dòng)控制,從而實(shí)現(xiàn)一鍵。我們不理會(huì)這個(gè)提示,直接找到光盤→軟件資料→CH340驅(qū)動(dòng),安裝該驅(qū)動(dòng),如圖所示:腦),如圖所示:USB在圖4.2.4中可以看到,我們的USB串口被識(shí)別為COM3,這里需要注意的是:不腦可能不一樣,你的可能是、5等,但是USB-SERIALCH340,這個(gè)一定是一樣的。如果沒(méi)找到USB串口,則有可能是你安裝有誤,或者系統(tǒng)不兼容。在安裝了USB串口驅(qū)動(dòng)之后,我們就可以開始串口代碼了,這里我們的串口軟件選擇的是mcuisp,該軟件屬于第軟件,由單片機(jī)編程網(wǎng)提供,大家可以去免費(fèi),本指南的光盤也附帶了這個(gè)軟件,版本為V0.993。該軟件啟動(dòng)界然后我們選擇要的Hex文件,以前面我們新建的工程為例,因?yàn)槲覀兦懊嬖诠こ探⑦@個(gè)Hex文件即可。mcuisp編程前重裝文件,該選項(xiàng)也比較有用,當(dāng)選中該選項(xiàng)之后,mcuisp會(huì)在每次編程之前,將就會(huì)通過(guò)DTR和RTS信號(hào)來(lái)控制板載的一鍵功能電路,以實(shí)現(xiàn)一鍵功能。如果不選擇,則無(wú)法實(shí)現(xiàn)一鍵功能。這個(gè)是必要的選項(xiàng)(在BOOT0接GND的條件下)。bps那里設(shè)置,對(duì)于STM32,該波特率最大虛擬的串口,如圖所示:USB串口的安裝可知,開發(fā)板的USBCOM3了(如果你的電腦是被圖完且從0X 艦STM32開發(fā)板發(fā)回來(lái)的信息,如圖所示:bug,這時(shí),就有必要通過(guò)硬件調(diào)就可以實(shí)時(shí)程序,從而找到你程序中的bug,使你的開發(fā)事半功倍。這里我們以JLINKV8為例,說(shuō)說(shuō)如何調(diào)試STM32。JLINKV8支持JTAGSWDSTM32也支持JTAG和SWD2種方JLINKV8的驅(qū)動(dòng)安裝比較簡(jiǎn)單,我們?cè)谶@里就不說(shuō)了。在安裝了JLINKV8的驅(qū)動(dòng)之后,我們接上JLINKV8,并把JTAG口插到ALIENTEKSTM323.2節(jié)新建的工程,點(diǎn)擊,打開OptionsforTarget選項(xiàng)卡,在Debug欄選擇仿真工具為Cortex-M3J-LINK,如圖所示:startup_stm32f10x_hd.sReset_Handler,再跳到main函數(shù)。IO口,而在ALIENTEKSTM32IO口可能被其他外設(shè)用到,可能造SW模式。MaxClock,的USB數(shù)據(jù)線比較差,那么可能會(huì)出問(wèn)題,此時(shí),你可以通過(guò)降低這里的速率來(lái)試試。程器,如圖所示:圖 FLASH512KB,所以我們點(diǎn)擊AddProgrammingAlgorithm512K型STM32。然后選中ResetandRun選項(xiàng),以實(shí)現(xiàn)在編程后自動(dòng)啟動(dòng),其他默認(rèn)設(shè)置即可。設(shè)置完成之后,如圖所示。圖 圖 將向大家介紹RVMDK軟件的一些使用技巧,這些技巧在代碼編輯和編寫方面會(huì)非常有用,希圖3. 在該框中我們選擇Colors&Fonts選項(xiàng)卡,在該選項(xiàng)卡內(nèi),我們就可以設(shè)置自己的代碼圖3. OK,就可以在主界面看到你所修改后的結(jié)果,例如我修改后的代碼顯示效果如圖3.5.1.4所示:要回到我們剛剛的配置框了,單這次我們要選擇User EditorCFiles,在右邊的User 框下面輸入你自己定義的關(guān)鍵字,如圖所三個(gè)關(guān)鍵字,肯定就會(huì)變成藍(lán)色。點(diǎn)擊OK,再回到主界面,可以看到u8變成了藍(lán)色了,如圖位,快捷鍵修改等,有的大家可以自己摸索一下。文本美化的技巧就為大家介紹到這里,接下來(lái)我們?yōu)榇蠹医榻BRVMDK的代碼編輯技巧。首先要介紹的就是TAB鍵的使用,這個(gè)鍵在很多編譯器里面都是用來(lái)空位的,每按一下移MDKTAB鍵和一般TABC++TAB鍵差不多。MDKTAB鍵支持塊操作。也就30來(lái)行代碼,如果你的代碼中的要好看多了,經(jīng)過(guò)這樣的整理之后,整個(gè)代碼一功能。只要你把光標(biāo)放到這個(gè)函數(shù)/變量(xxx)的上面(xxx為你想要查看的函數(shù)或變量的名字所示的菜單欄:中,我們找到GotoDefinitionOf‘delay_init以快速跳到delay_init函數(shù)的定義處(注意要先在OptionsforTargetOutput選項(xiàng)卡里面勾選BrowseInformation選項(xiàng),再編譯,再定位,否則無(wú)法定位。如圖所示:找代碼的時(shí)間。細(xì)心的大家會(huì)發(fā)現(xiàn)上面還有一個(gè)類似的選項(xiàng),就是GotoReferenceTo釋某一片的代碼,來(lái)看看執(zhí)行的情況,MDK提供了這樣的快速注釋/消注釋塊代碼的功能。也是通過(guò)右鍵實(shí)現(xiàn)的。這個(gè)操作比較簡(jiǎn)單,就是先選中你要注釋的代碼區(qū),然后右鍵,選擇Advanced->CommentSelection就可以了。.碼注釋掉了。執(zhí)行這個(gè)操作以后的結(jié)果如圖3.5.2.7所示:消注釋,MDK也提供了這個(gè)功能。與注釋類似,先選中被注釋掉的地方,然后通過(guò)右鍵 第一個(gè)是快速打開頭文件。在將光標(biāo)放到要打開的頭文件上,然后右鍵選擇.WORD等很多文檔操作的替換功能是差不多的,初始化函數(shù):delay_init為例然后再點(diǎn)擊IDE上面的,彈出如圖3.5.3.3所示 該方法可以很方便的查找各種函數(shù)/變量,而且可以限定搜索范圍(比如只查找.c文件和.hSTM32的時(shí)候,基本上沒(méi)有直接操作寄存器的例子,網(wǎng)上開始的時(shí)候,我就根據(jù)MDK提供的例子,對(duì)照,再結(jié)合MDK提供的查看寄存MDK的使用庫(kù)函數(shù)的代碼改為直接操作寄存器的代《STM32參考手冊(cè)》是ST出的資料,有STM32的詳細(xì)介紹,包括了STM32的各種寄存器定義以及功能等,是學(xué)習(xí)STM32的必備資料之一。而《Cortex-M3指南》則是對(duì)《STM32STM32的人都對(duì)CM3有了較深的Cortex-M3Cortex-M3有非常詳細(xì)的說(shuō)MDK的例子,找第二點(diǎn)中的兩本手冊(cè),當(dāng)你碰到只要以上三點(diǎn)做好了,學(xué)習(xí)STM32基本上就不會(huì)有什么問(wèn)題了。當(dāng)你有需要用的東STM32的外設(shè),MDKMDK自帶MDK的例子分為2部分,一部分是與USB 下(D盤是我MDK3.80A的安裝盤,所以這里路徑是這樣的,如果你安裝在其他位置,修改為相應(yīng)的即可以。MDK的例子為自己所用。希望能起到拋磚IOLEDMDK的D:\KEIL3.80A\ARM\Examples\ST\STM32F10xFWLib\Examples,可以看到很多例子,如圖3.5.4.1所示:STIO口翻轉(zhuǎn)的例子在GPIO下的IOToggle下,這個(gè)下面的所有文件拷貝D:\KEIL3.80A\ARM\Examples\ST\STM32F10xFWLib\Project.2readme.txt里面是有詳細(xì)說(shuō)明的,在使用之前最好先看看這個(gè)說(shuō)明。重點(diǎn)看看硬件環(huán)境的說(shuō)明,如圖3.5.4.5所示:接下來(lái)我們要做的就是一步步代碼,然后針對(duì)你的疑問(wèn)點(diǎn),打開Peripherals里面MDK的示例代碼是如何一步步修改里面的寄存器來(lái)實(shí)現(xiàn)的。對(duì)于外設(shè)的配置,MDK一般都是調(diào)用庫(kù)函數(shù)實(shí)現(xiàn)的,無(wú)法直接查看,這就需要你對(duì)MDK是如何實(shí)現(xiàn)這樣MDK的例子,看看自己的代碼在哪些地方和它有不一樣的地方,如果出MDK的示例來(lái)修改,一般你的問(wèn)題就能得到解決。當(dāng)然,這過(guò)需要多多查看手冊(cè),看看手冊(cè)里怎么說(shuō)的,MDK又是怎么做這一章,著重STM32開發(fā)的一些基礎(chǔ)知識(shí),讓大家對(duì)STM32開發(fā)有一個(gè)初步的了STM32的學(xué)習(xí)做一個(gè)鋪墊,方便后面的學(xué)習(xí)。這一章的內(nèi)容大家第一次看的時(shí)候7·4.1MDKC·4.4·4.6MDK·4.7MDK這里主要是簡(jiǎn)單的復(fù)下幾個(gè)C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn),引導(dǎo)那些C語(yǔ)言基礎(chǔ)知識(shí)不是很扎實(shí)的用竟是單片機(jī)開發(fā)中的必備基礎(chǔ)知識(shí)。對(duì)于C&~|^然后用|操作符設(shè)值。比如我要改變GPIOA的狀態(tài),可以先對(duì)寄存器的值進(jìn)行&操作 GPIOA->CRL&=0XFFFFFF0F;//將第4-7位清 GPIOx->BSRR=(((uint32_t)0x01)<<pinpos); 很直觀明了的知道,是將第pinpos位設(shè)置為1。如果你寫成 //PA.5輸出高,不改變其他位 他位都保留為1,簡(jiǎn)單的作法是直接給寄存器設(shè)置一個(gè)值: TIMx->SR= #define#define#define#define #define標(biāo)識(shí)符字符串 #define #ifdef標(biāo)識(shí)符程序段1#ifdef標(biāo)識(shí)符程序段1#ifdef#ifdef externu16externu16u16u16{}但是我們希望在test.c的changeId(void)函數(shù)中使用變量id,這個(gè)時(shí)候我們就需要在test.c中??聪旅鎡est.c中的代碼:test(void){test(void){struct{struct{IOuint32_tIOuint32_t… GPIOA;//定義結(jié)構(gòu)體變量typedeftypedef{IOuint32_tIOuint32_t…}MDKStructStruct{Int StructStruct結(jié)構(gòu)體名 結(jié)構(gòu)體變量列表例如:structU_TYPE構(gòu)體的成員變量BaudRate,方法是: voidUSART_Init(u8usartx,u32u32BaudRate,u8parity,u8mode); voidUSART_Init(u8usartx,u32BaudRate,u8parity,u8mode,u8wordlength); typedef{uint32_tUSART_BaudRate;typedef{uint32_tUSART_BaudRate;uint16_tUSART_StopBits;uint16_tUSART_Parity;uint16_tUSART_Mode;uint16_t}量了,MDK中是這樣做的:voidUSART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);理解了結(jié)構(gòu)體在這個(gè)例子中間的作用嗎?在以后的開發(fā)過(guò),如果你的變量定義過(guò)多,如果某幾個(gè)變量是用來(lái)描述某一個(gè)對(duì)象,你可以考慮將這些變量定義在結(jié)構(gòu)體中,這樣也使用結(jié)構(gòu)體組合參數(shù),可以提高代碼的可讀性,不會(huì)覺(jué)得變量定義。當(dāng)然結(jié)構(gòu)體的作用就遠(yuǎn)遠(yuǎn)不止這個(gè)了,同時(shí),MDKV10P25~28有講解,這里我們也把這一部分知識(shí)抽取出來(lái)講解,是為了大STM32之前對(duì)系統(tǒng)架構(gòu)有一個(gè)初步的了解。這里的內(nèi)容基本也是從中文參考手冊(cè)中入的了解STM32的系統(tǒng)架構(gòu),還需要在網(wǎng)上搜索其他資料學(xué)習(xí)學(xué)習(xí)。我們這里所講的STM32系統(tǒng)架構(gòu)主要針對(duì)的STM32F103這些非互聯(lián)型。首先我們看看STM32的系統(tǒng)架構(gòu)圖:STM32主系統(tǒng)主要由四個(gè)驅(qū)動(dòng)單元和四個(gè)單元構(gòu)成。內(nèi)核DCode總線通用DMA1;通用AHB到APBAPB設(shè)備;內(nèi)部FlASH閃存;②DCode總線:該總線將M3內(nèi)核的DCode總線與閃存器的數(shù)據(jù)接口相連接,常量。DCode和DMA到SRAM,閃存和外設(shè)的⑤總線矩陣:總線矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線和DMA主控總線之間的仲裁,仲裁利用AHB/APB橋:這兩個(gè)橋在AHB2個(gè)APB總線間提供同步連接,APB1STM32時(shí)鐘系統(tǒng)的知識(shí)在《STM32中文參考手冊(cè)V10P55~P73有非常詳細(xì)的講解,手冊(cè)來(lái)總結(jié)的,有一些直接是copy過(guò)來(lái)的,望大家諒解。STM32MCU一般都是采取多時(shí)鐘源的方法來(lái)解決這些問(wèn)題。鐘。從來(lái)源可分為外部時(shí)和內(nèi)部時(shí),外部時(shí)就是從外部通過(guò)接晶振的方式獲取時(shí),其中HSE和LSE是外部時(shí),其他的是內(nèi)部時(shí)。下面我們看看STM32的5個(gè)時(shí)②、HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部時(shí),頻率范圍時(shí)LSI還可以作為RTC的時(shí)。上面我們簡(jiǎn)要概括了STM32的時(shí),那么這5個(gè)時(shí)是怎么給各個(gè)外設(shè)以及系統(tǒng)提圖中我們用A~EMCOSTM32IO(PA8),它可以選擇一個(gè)時(shí)鐘信號(hào)輸出,可以PLL2分頻、HSI、HSE、或者系統(tǒng)時(shí)鐘。這個(gè)時(shí)鐘可以用來(lái)給外HSE128從圖中可以看出C處USB的時(shí)鐘是來(lái)自PLL時(shí)。STM32中有一個(gè)全速功能從PLL1.51分頻,也就是,當(dāng)需要使用USB模塊時(shí),PLL必須使能,并且時(shí)鐘頻率配置為48MHz或72MHz。SYSCLK。SYSCLKAHB分頻器分頻后送給各模塊使用。這些APB1分頻器。APB1分頻器輸出一路供APB1外設(shè)使用(PCLK1,最大頻率36MHz),另一路送給定時(shí)器(Timer)2、3、4倍頻器使用。最大頻率72MHz),另一路送給定時(shí)器(Timer)1倍頻器使用。其中需要理解的是APB1APB2的區(qū)別,APB1上面連接的是低速外設(shè),包括電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3等等,APB2上面連接的是高速外設(shè)包鐘要比APB1的高。外設(shè)、APB2外設(shè)等等。當(dāng)需要使用某模塊時(shí),記得一定要先使能對(duì)應(yīng)的時(shí)鐘。后面我們講解staticvoid{#ifdefSTM32system_stm32f10x.cSystemInit()函數(shù)中STM32的時(shí)鐘圖,做到心中有數(shù)。這里需要指明一下,對(duì)于系統(tǒng)時(shí)鐘,默認(rèn)情況staticvoid{#ifdef}#define#define#define同時(shí)還要注意的是,當(dāng)我們?cè)O(shè)置好系統(tǒng)時(shí)鐘后,可以通過(guò)變量SystemCoreClock獲取系統(tǒng)時(shí)鐘值,如果系統(tǒng)是72M時(shí)鐘,那么SystemCoreClock= 。這是在system_stm32f10x.c文件uint32_tuint32_tSystemCoreClockuint32_tSystemCoreClockuint32_tSystemCoreClockuint32_tSystemCoreClock
====== AHB總線時(shí)鐘(使用SYSCLK) PLL時(shí) PA9,PA101TX,RX引腳使用的時(shí)候,那就是端口復(fù)用。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); 在復(fù)用功能下GPIO的模式是怎么對(duì)應(yīng)的,這個(gè)可以查看手冊(cè)《STM32中文參考手冊(cè)V10》 PA.9復(fù)用推挽輸出 PA.9復(fù)用推挽輸出GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PA.9GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF_PP復(fù)用推挽輸出GPIO_In
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 伙人合同范本
- 出租山場(chǎng)合同范本
- 共享機(jī)器投放合同范本
- 合同標(biāo)物合同范本
- 倉(cāng)儲(chǔ)設(shè)備求購(gòu)合同范本
- 蘭州旅游合同范本
- 吊頂供貨合同范本
- 危房房屋拆除合同范本
- 參與領(lǐng)獎(jiǎng)居間合同范本
- 叉車掛靠公司合同范本
- 2022年HTD-8M同步帶輪尺寸表
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識(shí)》PPT課件
- 煤礦供電系統(tǒng)及供電安全講座方案課件
- 綠色建筑及材料分析及案列
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡(jiǎn)介
- 實(shí)用中西醫(yī)結(jié)合診斷治療學(xué)
- 論《說(shuō)文解字》中的水文化
- 德龍自卸車合格證掃描件(原圖)
- [國(guó)家公務(wù)員考試密押題庫(kù)]申論模擬925
評(píng)論
0/150
提交評(píng)論