專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

STM32微處理器簡(jiǎn)介

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月14日   【字體:



關(guān)于Cortex內(nèi)核(以下選摘自百度百科-Cortex:http://baike.baidu.com/view/1745516.htm):


 

Cortex™-A 系列 - 開放式操作系統(tǒng)的高性能處理器
 

Cortex™-A 系列廣泛運(yùn)行于手機(jī),PDA,掌上電腦等需要高頻率時(shí)鐘處理的產(chǎn)品
 


 

 

Cortex™-R 系列 - 面向?qū)崟r(shí)應(yīng)用的卓越性能 


 

Cortex™-M 系列 - 面向具有確定性的微控制器應(yīng)用的成本敏感型解決方案  [比如山寨手機(jī)..]

 


 

STM32系列處理器使用ARM Cortex-M3內(nèi)核.Cortex-M3代表的是ARM9架構(gòu)
 


 

 

 


 

不同型號(hào)的STM32處理器引腳數(shù)和性能也有所不同,下面是STM32F10x系列:


 

 

 


 


 

上圖橫軸代表芯片的引腳類型,縱軸代表芯片的內(nèi)部代碼FLASH(即ROM)大小


 

由于每一種的STM32F10x系列處理器都會(huì)有不同的附加性質(zhì),下面就給出來(lái)讓大家了解一下

 


 

 


 

 

 


 

 

下面用STM32F107VCT6來(lái)和AT89C51-24PU來(lái)作一個(gè)對(duì)比(其實(shí)根本是不能相比的,一個(gè)是微處理器[72MHZ],一個(gè)是單片機(jī)[24MHZ],只不過(guò)是


 

為了讓大家更能理解一些實(shí)質(zhì)性的東西)


 

外觀上的差異是最容易理解的,STM32F107VCT6采用的是LQFP-100Pin 封裝,AT89C51采用DIP-40Pin封裝(Pin是指引腳數(shù),DIP也就是電子元件


 

里面的直插元件,貼片元件也有很多種,其中LQFP封裝就是一個(gè)例子) 


 


 


 

LQFP-100Pin,封裝引腳圖


 

 

 


 


 

STM32F107VCT6 實(shí)物圖片

 


 

 

AT89C51和三種同類型DIP封裝單片機(jī)[C52內(nèi)部ROM為8K,S51可以ISP直接調(diào)試代碼]

 

 


 


 

 

從代碼儲(chǔ)存來(lái)比較,STM32F107VCT6有512K字節(jié)的內(nèi)部ROM,而AT89C51卻只有4K,89C52只有8K,但是可以通過(guò)外部PROM/EEPROM來(lái)讀取


 

代碼,AT89C51可以尋址0x0000-0xFFFF,也就是16K拓展ROM.STM32F107VCT6也可以實(shí)現(xiàn)外部拓展代碼儲(chǔ)存,用NAND FLASH


 


 

從隨機(jī)儲(chǔ)存器比較,STM32F107VCT6有64K RAM,AT89C51有512B RAM


 


 

從指令集來(lái)比較,89Cxx類使用MCU-51指令集,STM32使用ARM指令集,ARM7系列和ARM9系列也各使用不同的指令集


 


 

控制STM32的通用IO端口的代碼和AT89C51大有不同,對(duì)于STM32的各個(gè)端口還需要先配置,后使用,AT89C51就只需要一句


 

sbit CtrlPort=Px^x;  或者 Px=0x??;  [Px^x代表Px端口的第x位IO引腳,0x??代表一個(gè)兩位的十六進(jìn)制的數(shù)]


 

就可以使用這個(gè)IO引腳,對(duì)一個(gè)IO引腳輸出高電平和輸出低電平只需簡(jiǎn)單的


 

CtrlPort=1  輸出高電平  CtrlPort=0  輸出低電平
 


 

STM32對(duì)于一個(gè)將要輸出高電平再低電平的端口需要先對(duì)它進(jìn)行初始化,以STM32的PA3引腳為例


 

 

void PA3_config(void)

{

  GPIO_InitTypeDef GPIO_InitStructure;   //這個(gè)是控制GPIO引腳的結(jié)構(gòu)


 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO , ENABLE);  //對(duì)PA的端口進(jìn)行AFIO的時(shí)鐘處理

  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;  //第3個(gè)引腳

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //輸出50MHz

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //開漏輸出

  GPIO_Init(GPIOA, &GPIO_InitStructure); //對(duì)PA端口的Pin3引腳進(jìn)行初始化

}

 


 

這個(gè)就是初始化,后面讓IO端口進(jìn)行高低電平輸出


 

 

void PA3_Turn_Low(void)

{

    GPIO_ResetBits(GPIOA, GPIO_Pin_3);  //設(shè)置PA3為低電平

}


 

void PA3_Turn_Hige(void)

{

    GPIO_SetBits(GPIOA, GPIO_Pin_3);   //設(shè)置PA3為高電平

}

 


 

用一個(gè)STM32的引腳挺麻煩的,不過(guò)處理器主頻也彌補(bǔ)函數(shù)過(guò)多帶來(lái)的增多額外時(shí)鐘處理的一些缺陷

關(guān)閉窗口

相關(guān)文章