日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]STM32F103C8T6是一款由意法半導(dǎo)體公司(ST)推出的基于Cortex-M3內(nèi)核的32位微控制器,硬件采用LQFP48封裝,屬于ST公司微控制器中的STM32系列。除了被我們熟知的STM32,ST公司還有SPC5X系列、STM8系列等,具體參數(shù)如下:

內(nèi)核 Cortex-M3

Flash 64K x 8bit

SRAM 20K x 8bit

GPIO 37個GPIO,分別為PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1

ADC 2個12bit ADC合計12路通道(外部通道:PA0到PA7+PB0到PB1,內(nèi)部通道:)

Timers

4個16bit定時器/計數(shù)器,分別為TIM1、TIM2、TIM3、TIM4

TM1帶死區(qū)插入,常用于產(chǎn)生PWM控制電機(jī)

2個看門狗定時器(獨立看門狗IWDG、窗口看門狗WWDG)

1個24bit向下計數(shù)的滴答定時器systick

工作電壓、溫度 2V~3.6V、-40°C ~ 85°C

通信串口

2*IIC,2*SPI,3*USART,1*CAN

系統(tǒng)時鐘 內(nèi)部8MHz時鐘HSI最高可倍頻到64MHz,外部8MHz時鐘HSE最高可倍頻到72MHz

ARM公司在ARM11以后改用Cortex命名,并分成A、R和M三類,M系列有M0、M0+、M3、M4、M7。 Cortex-M3是ARM公司推出的基于ARMv7架構(gòu)的MCU內(nèi)核,ST公司在此內(nèi)核的基礎(chǔ)上完成了USART、DMA、GPIO等外圍電路的設(shè)計。在M系列不同內(nèi)核開發(fā)下的STM32,大致可分成低功耗系列、主流系列、高性能系列3個部分,其具體信息如下圖所示:

相同系列的內(nèi)核一般相同,如F1系列都采用Cortex-M3內(nèi)核開發(fā),但根據(jù)Flash大小不同可將STM32分成小容量產(chǎn)品(<64K)、中等容量產(chǎn)品(介于64K-128K)、大容量產(chǎn)品3個部分,各部分容量產(chǎn)品在使用標(biāo)準(zhǔn)庫SPL開發(fā)時需要使用不同的啟動文件并在預(yù)編譯處做好修改,其具體信息如下圖所示:

STM32F103C8T6整個系統(tǒng)結(jié)構(gòu)可以分為由ARM公司設(shè)計的Cortex-M3內(nèi)核和ST公司在此基礎(chǔ)上優(yōu)化的總線矩陣、DMA(Direct Memory Access,直接內(nèi)存讀取)、AHB、APB1以及APB2上掛載的外設(shè)等兩個部分,詳細(xì)結(jié)構(gòu)如下圖所示:

Cortex-M3摒棄了馮· 諾依曼結(jié)構(gòu)(普林斯頓結(jié)構(gòu)),采用了將指令存儲和數(shù)據(jù)存儲分開的 的哈佛結(jié)構(gòu)(Harvard Architecture ),這樣一來Cortex-M3同時擁有了獨立的32-bit指令總線和32-bit數(shù)據(jù)總線,數(shù)據(jù)訪問將不再占用指令總線,同時讀取指令和數(shù)據(jù)后提升了MCU運行速度。馮諾依曼和哈弗結(jié)構(gòu)的宏觀對比如下圖所示:

Cortex-M3是一個 32 位處理器內(nèi)核,正因如此,STM32才被稱作為32-bit微控制器,他擁有32條地址總線,也就是說最大尋址空間為。此外,Cortex-M3的寄存器是32 位的,存儲器接口也是 32 位的,其詳細(xì)結(jié)構(gòu)如下圖所示:

二、最小系統(tǒng)板

或許大家有經(jīng)常聽起過最小系統(tǒng)板這個詞兒,那么什么是最小系統(tǒng)板呢?其實最小系統(tǒng)板就是一個最精簡的電路,精簡到只能維持MCU的最基本的正常工作。最小系統(tǒng)一般由外部復(fù)位電路、外部時鐘電路以及MCU本體構(gòu)成,除此之外沒有其他諸如藍(lán)牙、外置EEPROM、時鐘芯片DS1302、SPI接口顯示屏等外接設(shè)備。(注:STM32支持內(nèi)部時鐘和上電復(fù)位,但從傳統(tǒng)意義上講最小系統(tǒng)就是由外部復(fù)位電路、外部時鐘電路以及MCU本體構(gòu)成。)我在淘寶上買了一塊STM32F103C8T6的最小系統(tǒng)板,板子的設(shè)計很精致。喏,它長這個樣子:

如果你對最小系統(tǒng)仍一知半解,那你看看下面這個正點原子開發(fā)的開發(fā)板就能夠明白,最小系統(tǒng)是真的精簡到不能再精簡了。

其實淘寶買來的最小系統(tǒng)板和10塊錢包郵的那個藍(lán)色最小系統(tǒng)板區(qū)別不大,只是將一些引腳引出好插諸如顯示屏類的外設(shè)。板子設(shè)計的很巧妙,所有引腳都引出來了,同時預(yù)留四個接口方便接入顯示屏等設(shè)備,預(yù)留了SWD調(diào)試接口,可以使用ST-LINK下載程序與仿真。

跟STC89C52RC單片機(jī)不一樣的是,STM32F103C8T6的GPIO有8種模式,其中包含上拉、下拉輸入模式,所以外接按鈕時可不設(shè)計上下拉電阻。根據(jù)他的原理圖顯示:按鍵KEY0一端接到3.3V的VCC,一端接到PA0引腳。發(fā)光二極管LED0一端也同樣經(jīng)1KΩ電阻接到3.3V的VCC,另一端則接到PC13上。因此,想要讓二極管發(fā)光的話需要讓PC13輸出低電平。STM32最大工作電壓3.6V,使用了LDO(低壓差線性穩(wěn)壓器)將輸入電壓VIN降到3.3v給微控制器供電。3.3V和GND之間的4個0.1uf的旁路電容(去除高頻交流信號)接到了芯片的4個VDD和4個VSS上(WHAT?芯片為啥整四個VDD和四個VSS?我猜應(yīng)該是增強(qiáng)供電能力,保證供電的可靠性)。

三、命名規(guī)則

我在網(wǎng)上找到了STM32F103中文手冊,單片機(jī)命名原理如下圖所示:

四、引腳排布&引腳復(fù)用

根據(jù)命名規(guī)則可知,STM32F103C8T6中的C代表著這款芯片有48個引腳,其引腳排布如下圖所示:

STM32微控制器有著豐富的功能,僅靠48個引腳是不夠分配所有功能的,所以有的引腳可以實現(xiàn)好幾種功能,這就叫引腳復(fù)用。一般而言,大部分引腳的第一功能是GPIO(通用輸入輸出口)。但值得注意的是:PA13、PA14、P15、PB3、PB4、PC14、PC15、PD0、PD1的默認(rèn)功能并不是GPIO,使用時需要開啟AFIO時鐘,注意一下這一點。B站某UP制作了一個直觀的圖片,如下圖所示:

圖片來源:公眾號"電子開發(fā)學(xué)習(xí)"

官方手冊提供的STM32F103系列微控制器引腳的默認(rèn)功能如下圖所示:

五、程序下載

STM32單片機(jī)支持3種程序下載方式,根據(jù)原理不同可分為ISP串口下載(使用USB-TTL接PA9、PA10)、SWD下載(使用ST-LINK接PA13、PA14)、JTAG下載(使用JLINK接PA13、PA14、PA15、PB3、PB4)。

1.ISP下載

ISP的全程是In-System Programming,在線系統(tǒng)編程的意思。STM32單片機(jī)一般可通過UART1引腳進(jìn)行程序燒錄,燒錄的時候需要配合BOOT0、BOOT1接地與否來實現(xiàn)。BOOT0、BOOT1可以組合出四種狀態(tài),不同位置的含義如下圖所示,其中X是無關(guān)項。

使用ISP串口下載前,將單片機(jī)上電之前需要先用跳線帽把BOOT0短接到1的位置,BOOT1短接到0的位置,即系統(tǒng)存儲器模式,然后才能通過串口下載程序。ISP串口下載完成后斷電,在單片機(jī)上電之前需要先用跳線帽把BOOT0短接到0的位置,即主閃存存儲器模式。

由于單片機(jī)使用的TTL電平通信協(xié)議,與電腦的USB口進(jìn)行串口通信時需要使用轉(zhuǎn)串口芯片,常見的有CH340系列(如CH340N)、FT232、PL2303等等,下圖以CH340T為例。

下載器GND與單片機(jī)GND相連(連一個就行),下載器3.3V與單片機(jī)3.3V相連(或者下載器5V與單片機(jī)VIN相連)、下載器RXD與單片機(jī)PA9(U1TX)相連,下載器TXD與單片機(jī)PA10(U1RX)相連。

了解接線后,可以嘗試編譯下載。下載軟件有很多,ST官方出了Flash Loader Demonstrator軟件用于程序下載,國內(nèi)也有一款FLYMCU的下載軟件。

Flash Loader Demonstrator

2.SWD下載

使用SWD接口下載只需要連接3.3V(如果燒錄程序的板子自帶供電的話3.3V引腳也不用連)、GND、SWDIO(PA13)、 SWCLK(PA14)、RST(非必要連線),可以從淘寶購買十幾塊的ST-LINK下載器(這種U盤形狀的其實不是ST公司出品的,但是燒錄了他們的固件,也是可以用滴)。使用SWD接口除了可以燒錄程序外,還可以實現(xiàn)在線仿真(debug),仿真過程可以監(jiān)視寄存器等數(shù)據(jù),非常適合軟件開發(fā)(找問題)。值得注意的是,ST-LINK/V2只支持給自家的STM32和STM8燒錄程序,不支持為其他公司的單片機(jī)燒錄程序(即使同樣搭載Cortex-M3內(nèi)核)。

ST-LINK/V2

3.JTAG下載

JTAG接口需要使用TMS(模式選擇)、TCK(時鐘)、TDI(數(shù)據(jù)輸入)、TDO(數(shù)據(jù)輸出)、nTRST(復(fù)位,非必要),對應(yīng)到STM32F103C8T6上就是PA13(TMS)、PA14(TCK)、PA15(TDI)、PB3(TDO)、PB4(nTRST)引腳,這些引腳第一功能就是JTAG接口,這就是上面所說的為什么這些引腳不能簡單的當(dāng)GPIO用。采用JTAG下載時可以使用J-LINK下載器(正版SEGGER的J-LINK價格比較昂貴,國內(nèi)仿制的建議買V9版本以上),也可以使用ST公司原廠或國內(nèi)仿制的帶JTAG接口的ST-LINK/V2(如正點原子推出的,不過還是好貴,嗚嗚嗚)。不過JTAG能實現(xiàn)的功能SWD一般也能實現(xiàn),我比較懶,一般不使用這種下載接口。

J-LINK

ST-LINK/V2

如果我們不需要使用JTAG下載,但GPIO資源緊張或PCB設(shè)計時已經(jīng)使用了這些第一功能為JTAG的引腳,那么我們就需要關(guān)閉JTAG。比如說我要使用GPIOA15作為GPIO口,那么代碼層面需要這樣實現(xiàn):

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能PORTA時鐘

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);// 關(guān)閉JTAG但使能SWD

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PA15

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設(shè)置成上拉輸入

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO

詳細(xì)關(guān)閉方法:見另一位博主的《STM32 JTAG調(diào)試》

六、RTT

RTT的全稱是Real Time Transfer,翻譯過來就是實時傳輸。為什么給大家介紹這個呢,上面有講到J-LINK、ST-LINK等可以下載程序,也可以在線仿真。那么問題來了,他們直接支持串口通信嘛?答案是不可以!!!不過別慌,針對這個問題SEGGER公司推出了共享內(nèi)存技術(shù),這個功能可以省去外接使用USART進(jìn)行串口數(shù)據(jù)測試,灰常方便。不過由于RTT是SEGGER公司推出的,所以這個是需要使用J-LINK V8版本及以上的調(diào)試器的,如果不差錢的話,可以優(yōu)先考慮J-LINK。RTT支持所有搭載ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33內(nèi)核的MCU,不局限于STM32。

SEGGER官網(wǎng)

不過使用RTT功能是需要往工程文件里添加SEGGER提供的源代碼的,官網(wǎng)安裝包:" data-link-title="<官網(wǎng)下載>"><官網(wǎng)下載>,詳細(xì)的安裝與使用教程見《硬漢哥分享的資料》。

導(dǎo)入源代碼后可以在程序中使用以下函數(shù),這些函數(shù)根據(jù)描述看很容易知道他的作用:

函數(shù)名 描述

SEGGER_RTT_Read() Read data from an input buffer.

SEGGER_RTT_Write() Write data to an output buffer.

SEGGER_RTT_WriteString() Write a zero-terminated string to an output buffer.

SEGGER_RTT_printf() Write a formatted string to an output buffer.

SEGGER_RTT_GetKey() Get one character from input buffer 0.

SEGGER_RTT_HasKey() Check if a character is available in input buffer 0.

SEGGER_RTT_WaitKey() Wait for a character to be available in input buffer 0 and get it.

SEGGER_RTT_ConfigUpBuffer() Configure an up (output) buffer.

SEGGER_RTT_ConfigDownBuffer() Configure a down (input) buffer.

SEGGER_RTT_Init() Initialize RTT Control Block structure when using RAM only targets.

SEGGER_RTT_SetTerminal() Set the "virtual" Terminal to use for output on channel 0 via Write and WriteString.

SEGGER_RTT_TerminalOut() Send a zero-terminated string via a "virtual" terminal.

最后,使用RTT需要在電腦上安裝J-Link RTT Viewer、J-Link RTT Client、J-Link RTT Logger,這3個終端可以選擇自己喜歡的安裝使用。

七、RTOS

RTOS(Real-time operating system)是實時操作系統(tǒng)的總稱,目前市面上有freeRTOS、RT-Thread、UCOS-III等多種實時操作系統(tǒng),到了STM32這種復(fù)雜而強(qiáng)大的硬件層面,程序員將不再僅僅拿它當(dāng)傳統(tǒng)的MCU來跑裸機(jī)程序(裸機(jī)是指沒有用上RTOS的程序),而是開始考慮程序的協(xié)調(diào)性和并行多任務(wù)(并不是真正意義上的并行,因為單核同一時間只能處理一件事情)。RTOS是一個有趣的東西,如果大家感興趣我后期會考慮更新一篇有關(guān)RTOS的文章,大家目前可以去freeRTOS官網(wǎng)看看或者閱讀其他作者的文章。

八、官網(wǎng)原文介紹

The STM32F103xx medium-density performance line family incorporates the high-performance ARM®Cortex®-M3 32-bit RISC core operating at a 72 MHz frequency, high-speed embedded memories (Flash memory up to 128 Kbytes and SRAM up to 20 Kbytes), and an extensive range of enhanced I/Os and peripherals connected to two APB buses. All devices offer two 12-bit ADCs, three general purpose 16-bit timers plus one PWM timer, as well as standard and advanced communication interfaces: up to two I2Cs and SPIs, three USARTs, an USB and a CAN.

The devices operate from a 2.0 to 3.6 V power supply. They are available in both the –40 to +85 °C temperature range and the –40 to +105 °C extended temperature range. A comprehensive set of power-saving mode allows the design of low-power applications.

The STM32F103xx medium-density performance line family includes devices in six different package types: from 36 pins to 100 pins. Depending on the device chosen, different sets of peripherals are included, the description below gives an overview of the complete range of peripherals proposed in this family.

These features make the STM32F103xx medium-density performance line microcontroller family suitable for a wide range of applications such as motor drives, application control, medical and handheld equipment, PC and gaming peripherals, GPS platforms, industrial applications, PLCs, inverters, printers, scanners, alarm systems, video intercoms, and HVACs.

主要特性

ARM®32-bit Cortex®-M3 CPU Core

72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access

Single-cycle multiplication and hardware division

Memories

64 or 128 Kbytes of Flash memory

20 Kbytes of SRAM

Clock, reset and supply management

2.0 to 3.6 V application supply and I/Os

POR, PDR, and programmable voltage detector (PVD)

4-to-16 MHz crystal oscillator

Internal 8 MHz factory-trimmed RC

Internal 40 kHz RC

PLL for CPU clock

32 kHz oscillator for RTC with calibration

Low-power

Sleep, Stop and Standby modes

VBAT supply for RTC and backup registers

2 x 12-bit, 1 μs A/D converters (up to 16 channels)

Conversion range: 0 to 3.6 V

Dual-sample and hold capability

Temperature sensor

DMA

7-channel DMA controller

Peripherals supported: timers, ADC, SPIs, I2Cs and USARTs

Up to 80 fast I/O ports

26/37/51/80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant

Debug mode

Serial wire debug (SWD) & JTAG interfaces

7 timers

Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input

16-bit, motor control PWM timer with dead-time generation and emergency stop

2 watchdog timers (Independent and Window)

SysTick timer 24-bit downcounter

Up to 9 communication interfaces

Up to 2 x I2C interfaces (SMBus/PMBus)

Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)

Up to 2 SPIs (18 Mbit/s)

CAN interface (2.0B Active)

USB 2.0 full-speed interface

CRC calculation unit, 96-bit unique ID

Packages are ECOPACK®

九、文章小結(jié)

STM32F103C8T6單片機(jī)采用LQFP48封裝設(shè)計,芯片一共引出44只引腳,其中A口有A0-A15共16個引腳,B口有B0-B15共16個引腳,C口有C13-C15共3個引腳,D口有D0-D1共兩個引腳。值得注意的是最小核心板C14和C15接了32.768K晶振,D0和D1接了8MHz晶振,一般不要用做IO口。如果實在要用只能去掉外部晶振電路(使用HSI、LSI),通過重映射和配置AFIO_MAPR寄存器實現(xiàn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉