久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

對(duì)位操作,由別名轉(zhuǎn)換到位的方法以及一些stm32硬件知識(shí)

作者:誰(shuí)心鎖欲   來(lái)源:誰(shuí)心鎖欲   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月05日   【字體:
Stm32相對(duì)于51復(fù)雜了太多,之前自己學(xué)習(xí)方法不對(duì),所以導(dǎo)致花了時(shí)間也沒(méi)什么效果,現(xiàn)在工作了自己也知道該怎么來(lái)更好學(xué)習(xí)了,準(zhǔn)備花兩周左右看一下stm32中文手冊(cè)及固件庫(kù)手冊(cè),然后再按照正點(diǎn)原子的不完全手冊(cè)結(jié)合這開(kāi)發(fā)板來(lái)學(xué)習(xí),也記下學(xué)習(xí)筆記總結(jié)學(xué)習(xí)、加深記憶。

 

此次的學(xué)習(xí)是以STM32F103RBT6作為核心MCU的,其有128k flash20k sram2個(gè)spi3個(gè)串口、1個(gè)usb1個(gè)can2個(gè)12位的adcrtc以及51個(gè)可用的IO口。

筆記一 存儲(chǔ)器及總線架構(gòu)

1.Stm32主系統(tǒng)由以下部分構(gòu)成:

 四個(gè)驅(qū)動(dòng)單元:  Cortex??-M3內(nèi)核DCode總線(D-bus),和系統(tǒng)總線(S-bus)  通用DMA1和通用DMA2

 四個(gè)被動(dòng)單元  內(nèi)部SRAM

 內(nèi)部閃存存儲(chǔ)器

 FSMC

 AHBAPB的橋(AHB2APBx),它連接所有的APB設(shè)備。

2.在每一次復(fù)位以后,所有除SRAMFLITF以外的外設(shè)都被關(guān)閉,在使用一個(gè)外設(shè)之前,必須設(shè)置寄存器RCC_AHBENR來(lái)打開(kāi)該外設(shè)的時(shí)鐘。所以以后編程的時(shí)候要記住設(shè)置RCC_AHBENR來(lái)使能外設(shè)。

3.memory map是很重要的,以前一直沒(méi)有引起足夠的重視,程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、寄存器和輸入輸出端口被組織在同一個(gè)4GB的線性地址空間內(nèi)

4. 兩個(gè)位段(bit-band)區(qū),下面的映射公式給出了別名區(qū)中的每個(gè)字是如何對(duì)應(yīng)位帶區(qū)的相應(yīng)位的(相當(dāng)于51單片機(jī)中的P0口操作轉(zhuǎn)換到P0^1的操作)

bit_word_addr = bit_band_base + (byte_offset×32) + (bit_number×4)

其中: bit_word_addr是別名存儲(chǔ)器區(qū)中字的地址,它映射到某個(gè)目標(biāo)位。

bit_band_base是別名區(qū)的起始地址。

byte_offset是包含目標(biāo)位的字節(jié)在位段里的序號(hào)

 bit_number是目標(biāo)位所在位置(0-31)

例子: 下面的例子說(shuō)明如何映射別名區(qū)中SRAM地址為0x20000300的字節(jié)中的位2 0x22006008 = 0x22000000 + (0x300×32) + (2×4). 對(duì)0x22006008地址的寫(xiě)操作與對(duì)SRAM中地址0x20000300字節(jié)的位2執(zhí)行讀--寫(xiě)操作有著相同的效果。

5.boot0boot1可以設(shè)置stm32啟動(dòng)模式

 

啟動(dòng)模式選擇引腳       啟動(dòng)模式          說(shuō)明

BOOT1 BOOT0 

               主閃存存儲(chǔ)器    主閃存存儲(chǔ)器被選為啟動(dòng)區(qū)域

               系統(tǒng)存儲(chǔ)器       系統(tǒng)存儲(chǔ)器被選為啟動(dòng)區(qū)域

               內(nèi)置SRAM        內(nèi)置SRAM被選為啟動(dòng)區(qū)域

當(dāng)使用ISP下載的時(shí)候,選擇第三種啟動(dòng)方式。

 

筆記二  CRC計(jì)算單元

對(duì)于本章,不知道要用到什么地方,不過(guò)等以后遇到再說(shuō)。

CRC用兩個(gè)數(shù)據(jù)寄存器和一個(gè)控制寄存器,一個(gè)數(shù)據(jù)寄存器用來(lái)做計(jì)算寄存器,對(duì)其寫(xiě)操作作為輸入寄存器,輸入計(jì)算數(shù)據(jù);對(duì)其讀操作作為輸出寄存器,輸出計(jì)算結(jié)果。另一個(gè)數(shù)據(jù)寄存器只有低8位有效,可以用來(lái)寄存數(shù)據(jù);控制寄存器只有0位有效,作為reset位,只能寫(xiě)1,硬件自動(dòng)清零。

 

筆記三  電源控制及管理

      之前學(xué)51什么的,電源啊時(shí)鐘呀都只有一個(gè)不需要設(shè)置選擇,后來(lái)工作接觸了增強(qiáng)型8051后了解了多個(gè)時(shí)鐘電源后再來(lái)學(xué)32已經(jīng)不像之前那樣對(duì)這么多的時(shí)鐘電源感到畏懼了,呵呵。。Stm32的工作電壓(vdd)在2-3.6v,可以通過(guò)內(nèi)置的電壓調(diào)節(jié)器提供所需的1.8v電源。當(dāng)主電源(vdd)掉電后,可以通過(guò)VBAT引腳為實(shí)時(shí)時(shí)鐘(RTC)和備份寄存器提供電源,當(dāng)主電路中沒(méi)有設(shè)計(jì)使用外部電源時(shí),則必須將VBAT連接到VDD引腳上面。還有一點(diǎn)需注意,VDDVBAT在某些情況下會(huì)存在注入電流,所以在外部VBA和電源之間要接一個(gè)低壓降二極管。

       為了提高轉(zhuǎn)換精度,stm32adc提供了一個(gè)獨(dú)立的電源供電,過(guò)濾和屏蔽來(lái)自印刷電路板上面的毛刺干擾。

       電壓調(diào)節(jié)器總是使能的在復(fù)位后,有運(yùn)轉(zhuǎn)模式、停止模式、待機(jī)模式三種工作模式。

       Stm32中有一個(gè)完整的上電復(fù)位(POR)和掉電復(fù)位電路(PDR),只要供電電壓達(dá)到2v則能正常工作。當(dāng)VDD/VDDA低于VPORVPDR時(shí)則保持為復(fù)位狀態(tài)。對(duì)于可編程電壓檢測(cè)器(PVD可以利用PVD對(duì)VDD電壓與電源控制寄存器(PWR_CR)中的PLS[2:0]位進(jìn)行比較來(lái)監(jiān)控電源,這幾位選擇監(jiān)控電壓的閥值。

       因?yàn)橹把芯窟^(guò)silab公司出的低功耗無(wú)線芯片si100x(增強(qiáng)型8051內(nèi)核的),所以對(duì)stm32的低功耗模式就比較容易理解了,32有睡眠模式、停止模式和待機(jī)模式三種低功耗模式,可以通過(guò)不同的寄存器操作去實(shí)現(xiàn),這個(gè)就不詳細(xì)說(shuō)了,了解了大概,以后需要用的時(shí)候再詳細(xì)研究吧。32還提供了一個(gè)低功耗模式下的自動(dòng)喚醒模式,主要依靠rtc(和si100x差不多的,不過(guò)si100x還要強(qiáng)大的多)。

       對(duì)寄存器什么的就等以后用到的時(shí)候再查閱相關(guān)資料吧,相信那樣記憶也會(huì)更深刻。

 

筆記四  復(fù)位和時(shí)鐘電路

      32芯片支持三種復(fù)位形式,系統(tǒng)復(fù)位、上電復(fù)位和備份區(qū)域復(fù)位。

除了時(shí)鐘控制器的RCC_CSR寄存器中的復(fù)位標(biāo)志位和備份區(qū)域中的寄存器以外,系統(tǒng)復(fù)位將復(fù)位所有寄存器至它們的復(fù)位狀態(tài)。

當(dāng)發(fā)生以下任一事件時(shí),產(chǎn)生一個(gè)系統(tǒng)復(fù)位:

1. NRST引腳上的低電平(外部復(fù)位)

2. 窗口看門狗計(jì)數(shù)終止(WWDG復(fù)位)

3. 獨(dú)立看門狗計(jì)數(shù)終止(IWDG復(fù)位)

4. 軟件復(fù)位(SW復(fù)位)

5. 低功耗管理復(fù)位

可通過(guò)查看RCC_CSR控制狀態(tài)寄存器中的復(fù)位狀態(tài)標(biāo)志位識(shí)別復(fù)位事件來(lái)源。還存在軟件復(fù)位和低功耗復(fù)位,詳細(xì)參考中文手冊(cè)吧。

 

當(dāng)以下事件中之一發(fā)生時(shí),產(chǎn)生電源復(fù)位:

1. 上電/掉電復(fù)位(POR/PDR復(fù)位)

2. 從待機(jī)模式中返回

電源復(fù)位將復(fù)位除了備份區(qū)域外的所有寄存器。

 

備份區(qū)域擁有兩個(gè)專門的復(fù)位,它們只影響備份區(qū)域

當(dāng)以下事件中之一發(fā)生時(shí),產(chǎn)生備份區(qū)域復(fù)位。

 1. 軟件復(fù)位,備份區(qū)域復(fù)位可由設(shè)置備份域控制寄存器 (RCC_BDCR)中的BDRST位產(chǎn)生。

2. VDDVBAT兩者掉電的前提下,VDDVBAT上電將引發(fā)備份區(qū)域復(fù)位。

 

時(shí)鐘 有三種不同的時(shí)鐘源可以被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘(SYSCLK

     HSI振蕩器時(shí)鐘  HSE振蕩器時(shí)鐘  PLL時(shí)鐘

這些設(shè)備有以下2種二級(jí)時(shí)鐘源:

 40kHz低速內(nèi)部RC,可以用于驅(qū)動(dòng)獨(dú)立看門狗和通過(guò)程序選擇驅(qū)動(dòng)RTCRTC用于從停機(jī)/待機(jī)模式下自動(dòng)喚醒系統(tǒng)。

 32.768kHz低速外部晶體也可用來(lái)通過(guò)程序選擇驅(qū)動(dòng)RTC(RTCCLK) 當(dāng)不被使用時(shí),任一個(gè)時(shí)鐘源都可被獨(dú)立地啟動(dòng)或關(guān)閉,由此優(yōu)化系統(tǒng)功耗。

高速外部時(shí)鐘由(HSE)以下兩種時(shí)鐘源組成:

     HSE外部晶體/陶瓷諧振器  HSE用戶外部時(shí)鐘

為了減少時(shí)鐘輸出的失真和縮短啟動(dòng)穩(wěn)定時(shí)間,晶體/陶瓷諧振器和負(fù)載電容器必須盡可能地靠近振蕩器引腳。負(fù)載電容值必須根據(jù)所選擇的振蕩器來(lái)調(diào)整。外部時(shí)鐘信號(hào)(50%占空比的方波、正弦波或三角波)必須連到SOC_IN引腳,同時(shí)保證OSC_OUT引腳懸空。

還有HSI時(shí)鐘、PLL時(shí)鐘、LSE時(shí)鐘、LSI時(shí)鐘、時(shí)鐘安全選擇、RTC時(shí)鐘、看門狗時(shí)鐘等等也應(yīng)該理解的這里就不一一做筆記了,反正以后遇到了后再來(lái)查閱。

       關(guān)于系統(tǒng)時(shí)鐘的選擇,當(dāng)系統(tǒng)復(fù)位的時(shí)候HIS被默認(rèn)選為系統(tǒng)時(shí)鐘,當(dāng)其他時(shí)鐘源被選為系統(tǒng)時(shí)鐘之前,不能被停止。只有當(dāng)目標(biāo)時(shí)鐘源準(zhǔn)備就緒了(經(jīng)過(guò)啟動(dòng)穩(wěn)定階段的延遲或PLL穩(wěn)定),從一個(gè)時(shí)鐘源到另一個(gè)時(shí)鐘源的切換才會(huì)發(fā)生。在被選擇時(shí)鐘源沒(méi)有就緒時(shí),系統(tǒng)時(shí)鐘的切換不會(huì)發(fā)生。直至目標(biāo)時(shí)鐘源就緒,才發(fā)生切換。 在時(shí)鐘控制寄存器(RCC_CR)里的狀態(tài)位指示哪個(gè)時(shí)鐘已經(jīng)準(zhǔn)備好了,哪個(gè)時(shí)鐘目前被用作系統(tǒng)時(shí)鐘。

       微控制器允許輸出時(shí)鐘信號(hào)到外部MCO引腳。 相應(yīng)的GPIO端口寄存器必須被配置為相應(yīng)功能。

以下四個(gè)時(shí)鐘信號(hào)可被選作MCO時(shí)鐘:

     SYSCLK  HSI  HSE  2PLL時(shí)鐘

時(shí)鐘的選擇由時(shí)鐘配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。

 

筆記五  GPIOAFIO(復(fù)用功能I/O

相當(dāng)于51單片機(jī)I/O口來(lái)說(shuō),stm32I/O就要復(fù)雜得多了,不僅有多種輸入輸出方式,還需要配置不同的寄存器來(lái)達(dá)到相應(yīng)的功能。

 

(一)       每個(gè) GPIO端口有兩個(gè)32位配置寄存器(GPIOx_CRL,GPIOx_CRH,兩個(gè)32位數(shù)據(jù)寄存器)(GPIOx_IDRGPIOx_ODR),一個(gè)32為置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16位復(fù)位寄存器(GPIOx_BRR)及一個(gè)32為鎖定寄存器(GPIOx_LCKR)。可以將其配置如下模式:

 輸入浮空、 輸入上拉 、 輸入下拉 、 模擬輸入

 開(kāi)漏輸出 、 推挽式輸出、 推挽式復(fù)用功能、 開(kāi)漏復(fù)用功能

可以按照下面的表格對(duì)其配置:

表一 端口位配置表



    表二 輸出模式位

 

復(fù)位期間和剛復(fù)位后,復(fù)用功能未開(kāi)啟,I/O口被配置為浮空輸入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。復(fù)位后JTAG相關(guān)的引腳被置位上拉或者下拉模式。

所有的端口都可以配置為外部中斷模式,不過(guò)首先必須配置為輸入模式。對(duì)于復(fù)用功能現(xiàn)在不怎么了解怎么用,可能今天頭腦不清晰的原因,不過(guò)先不管吧,等以后碰到再說(shuō)。對(duì)gpio還可以進(jìn)行重新映射以及鎖定(即使端口位的配置在下一次復(fù)位之前不能改變),關(guān)于對(duì)輸入輸出等等功能的配置等以及寄存器以后用的時(shí)候一點(diǎn)點(diǎn)的積累吧,現(xiàn)在記住也沒(méi)用。

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 欧美精品一二三区 | 免费在线成人网 | 国产美女一区 | 一区二区三区影院 | 久久网站黄 | 久久69精品久久久久久久电影好 | 日韩一区三区 | 自拍偷拍亚洲视频 | 老司机免费视频 | 丁香综合| 99免费视频 | 成年人精品视频在线观看 | 在线国产一区 | 操久久| 国产美女一区二区 | 一级黄色片在线看 | 99riav国产一区二区三区 | 精品久久av| 三级在线免费观看 | 国产成人亚洲精品自产在线 | 天天操夜夜操 | 欧美精品一区二区三区在线 | av官网在线 | www免费视频 | 91精品国产色综合久久 | 国产特黄一级 | 五月婷婷色| 午夜免费福利影院 | 神马久久久久久久久久 | 国产精品一区二区免费 | 午夜合集 | 国产精品精品视频一区二区三区 | 玖玖综合网| 中文字幕 国产 | 亚洲最大福利网 | 国产日韩一区二区 | 国产精品日韩欧美一区二区三区 | 羞羞在线视频 | 一区二区三区日本 | 国产精品一区二 | 亚洲国产成人在线 |