娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32(2):點(diǎn)亮LED(下)

發(fā)布者:電子創(chuàng)意達(dá)人最新更新時(shí)間:2024-12-31 來源: jianshu關(guān)鍵字:STM32  點(diǎn)亮LED  RCC 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

概述

點(diǎn)亮LED表面看起來貌似很簡單,但是如何想要搞清楚其背后牽涉的每一行代碼的具體含義,還是需要花費(fèi)一些功夫的,而且,只有把LED的背后只是搞清楚了,才算嵌入式開發(fā)的基礎(chǔ)入門。
今天我們就來研究一下LED的重頭戲,RCC_Init;什么是RCC?上手冊:


file

RCC

RCC,Reset and Clock Control,重置以及時(shí)鐘控制;STM32手冊使用了兩個(gè)章節(jié)來對其進(jìn)行描述,可見它的重要性;對于RCC的初始化也是比較復(fù)雜,里面包含了STM32對于時(shí)鐘的相關(guān)機(jī)制,

代碼總覽

void RCC_init(uint16_t PLL){
    uint32_t temp=0;  

    *((uint32_t *)RCC_CR) |= 0x00010000; 
    while(!( *((uint32_t *)RCC_CR) >>17));

    *((uint32_t *)RCC_CFGR) = 0X00000400;

    PLL -= 2;
    *((uint32_t *)RCC_CFGR) |= PLL<<18;   

    *((uint32_t *)RCC_CFGR) |= 1<<16;

    *((uint32_t *)FLASH_ACR)|=0x2;
    *((uint32_t *)RCC_CR) |= 0x01000000;
    while(!(*((uint32_t *)RCC_CR) >> 25));

    *((uint32_t *)RCC_CFGR) |= 0x00000002;
    while(temp != 0x02)
    {  
        temp = *((uint32_t *)RCC_CFGR) >> 2;
        temp &= 0x03;
    }   }

使能HSE

第一行有效代碼,是熟悉的味道,前一節(jié)我們說過,或運(yùn)算一般用于設(shè)定指定位(而且還不影響其他位)

*((uint32_t *)RCC_CR) |= 0x00010000;

看到了RCC_CR,首先就是翻手冊,RCC的章節(jié)的RCC_CR章節(jié):


file

然后查看寄存器內(nèi)部32位的定義:


file


0x00010000轉(zhuǎn)換為32bit的二進(jìn)制:0000 0000 0000 0001 0000 0000 0000 0000;這里有一個(gè)小技巧,就是學(xué)會分割來看,手冊里面的寄存器的定義一般定義是分為上下兩行的;從16進(jìn)制來看,從左往右,前面4為是負(fù)責(zé)上面RCC_CFGR的高位16bit,后面4位是對應(yīng)(二進(jìn)制)低位16bit,即下面的16bit;對此次而言,低4位都是0,可以不需要care,直接關(guān)注高4位即可,其中高4為只有最后一位是有效設(shè)置,1對應(yīng)的四位二進(jìn)制是0001,即16位設(shè)置為1,查看寄存器定義的16位對應(yīng)的是HSEON位,即使能HSEON。

HSE和時(shí)鐘

什么是HSEON?需要拆開來看:HSE ON,HSE是High Speed External,外部高速時(shí)鐘,所以HSEON就是使能外部高速時(shí)鐘;
為什么要配置HSE呢?因?yàn)樵谟布到y(tǒng)中,各個(gè)部件的工作、協(xié)調(diào),都是基于系統(tǒng)時(shí)鐘的,比如我們通常講的CPU的速度快慢,就是指CPU的時(shí)鐘頻率,即每秒鐘能夠工作多少個(gè)時(shí)鐘;


file

小貼士:

在win10系統(tǒng)中可以看到有兩個(gè)頻率,如下圖,分別是1.9GHz以及2.11GHz;其中第一個(gè)是Intel提供的標(biāo)準(zhǔn)頻率,其實(shí)是CPU名字的一部分,第二個(gè)頻率是win10系統(tǒng)自己計(jì)算出來的,很多時(shí)候和Intel提供的頻率值并不相等;不過兩者相差也不會太大。

系統(tǒng)時(shí)鐘有三個(gè)來源,分別是HSE(High Spped External),HSI(High Speed Internal)以及PLLCLK,引入了PLL就是因?yàn)楹芏鄷r(shí)候,需要基于系統(tǒng)時(shí)鐘進(jìn)行分頻倍頻,比如有的設(shè)備(RAM,DMA)需要比系統(tǒng)時(shí)鐘快,于是需要通過PLL來進(jìn)行加倍頻率,還有的低俗的設(shè)備需要低于系統(tǒng)頻率工作,也是通過PLL來進(jìn)行減速,這樣只需要一個(gè)系統(tǒng)時(shí)鐘就可以同時(shí)滿足高速和低俗設(shè)備。

所以PLL的時(shí)鐘源還是HSE,HSI,不過經(jīng)過PLL倍頻調(diào)節(jié)輸出的時(shí)鐘稱之為PLLCLK;
再回到我們的代碼里面,這里配置時(shí)鐘源就是HSEON(如果需要使用PLL則還需要將PLLx位配置為1);

確認(rèn)HSE使能生效

完成了時(shí)鐘源的配置,下面一步是等待HSEON的配置的生效:

while(!( *((uint32_t *)RCC_CR) >>17));

即第等待第18位(編號17)HSERDY的值變成1,當(dāng)且僅當(dāng)配置HSEON生效之后,該位置才會由硬件設(shè)置為1,注意在寄存器定義里面HSERDY配置為“r”,這個(gè)代表軟件層面是無法改變這個(gè)bit的值,只能夠讀?。?br/>

file


然后再查看寄存器定義里面對于這一位的解釋,0就是HSEON位設(shè)置并未生效,1就是設(shè)置已經(jīng)生效:

file


等待的過程是使用位運(yùn)算里面右移“>>'實(shí)現(xiàn)的,右移的運(yùn)算規(guī)則里面是低位直接丟棄,例如11111右移4bit,最后結(jié)果就是1;這行代碼的邏輯意義就是RCC_CR右邊17位直接丟棄,即016為拋棄,只是保留了3118位(注意數(shù)字方向,是從左向右逐次減小的,和寄存器定義一致),共計(jì)15bit;
又因?yàn)樯弦徊襟E中通過和0x00010000進(jìn)行與運(yùn)算將除了HSEON位之外的位置全部置為“0”了,所以之類RCC_CR右移17位之后,包括HSERDY在內(nèi)的位全部都是0,只有當(dāng)HSEON生效之后,HSERDY才是1,即*((uint32_t *)RCC_CR) >>17 = 1,于是此時(shí)退出while循環(huán)。


配置其他時(shí)鐘

CR位配置解決了,下面我們看一下CFGR的配置:

*((uint32_t *)RCC_CFGR) = 0X00000400;

看到這里,我覺得我們可以總結(jié)一下寫寄存器的基本套路:

  1. 查看手冊相應(yīng)章節(jié),并了解縮寫意義,比如CFGR,全稱Clock Configuration Register,時(shí)鐘配置寄存器:


    file

  2. 查看寄存器定義:


    file

  3. 查看具體的某一位的定義,比如我們這里設(shè)置為0X00000400,4是在后四位,所以重點(diǎn)關(guān)注低16bit,即從15 ~ 0bit:0000 0100 0000 0000,發(fā)現(xiàn)正好配置的PPRE1,值為100,手冊介紹如下:


    file

用來配置APB1的從HCLK中獲得時(shí)鐘的分頻系數(shù),二進(jìn)制100對應(yīng)的分頻系數(shù)是2;HCLK是AHB總線的時(shí)鐘;然后AHB經(jīng)過AHB-APB橋接將時(shí)鐘分配到APB1和APB2總線,APB1的總線對應(yīng)PCLK1,APB2總線對應(yīng)的PCLK2;這里配置的就是APB1時(shí)鐘頻率的分頻值,為HCLK/2;

這里有一個(gè)坑,雖然顯式的為PCLK1賦值了,但是其實(shí)隱式的同時(shí)將PCLK2(對應(yīng)APB2),AHB都賦值了;只不過配置的是0;

比如PPRE2配置為000,對應(yīng)的就是不分頻,或者說分頻數(shù)為1:


file

還有HPRE位,配置也是000,對應(yīng)的不分頻,或者說頻數(shù)為1:


file

所以CFGR的配置重要的指定了AHB總線以及APB1和APB2總線的分頻/倍頻數(shù);

設(shè)置PLL倍頻數(shù)

繼續(xù)看后面的代碼,PLL是參數(shù),即倍頻數(shù),PLL上面已經(jīng)介紹了,專門用于接入時(shí)鐘源然后后對其進(jìn)行分頻倍頻再分配給各個(gè)總線(下面掛載的設(shè)備):

PLL -= 2;*((uint32_t *)RCC_CFGR) |= PLL<<18;

那么這里為什么要-2呢?我們先存疑,理解了下一行代碼謎底就自然打開了;

PLL值左移18位,左移是位運(yùn)算,左移+或運(yùn)算 = 賦值操作,即將PLL值賦給18位起始的后面四位,通過查看寄存器定義可以看到CFGR的18位起始到后面四位是PLLMUL,再查看手冊對于PLLMUL的解釋:PLL的倍頻;不過看一下賦值情況0010(十進(jìn)制2)對應(yīng)是4倍頻,0011(十進(jìn)制3)對應(yīng)的是5倍頻,以此類推,就是寄存器的只是和真實(shí)的倍頻差2,看到這里你就明白了為什么在PLL -=2了:


file

緊隨其后的,可以知道是要給CFGR的第16bit賦值為1:

*((uint32_t *)RCC_CFGR) |= 1<<16;

查看手冊,是描述PLL時(shí)鐘源,1對應(yīng)是PLL的時(shí)鐘原始PREDIV1:

時(shí)鐘樹

關(guān)于PLLSRC以及PREDIV1他們之間關(guān)系在時(shí)鐘樹(Clock Tree)上面有比較明確的關(guān)系說明,從下圖可以看到作為時(shí)鐘源最開始是HSE,然后通過時(shí)鐘被分頻后成為了PREDIV1,然后再除以2,獲得了PLLSRC:


file

所以如果PLLMUL的值設(shè)置為1,即PLL的時(shí)鐘源采用內(nèi)部高速時(shí)鐘(HSI),最終輸出時(shí)鐘信號在HSI/2即可;
如果值設(shè)置為1即采用外部高速時(shí)鐘(HSE),在經(jīng)歷了分頻后輸出為PREDIV1(時(shí)鐘)信號,還需要再分頻一下,分頻系數(shù)為2;

FLASH ARC配置

再看下面的代碼就沒有那么怕了,直接明白,目的就是要給FLASH的ACR寄存器賦值:

*((uint32_t *)FLASH_ACR)|=0x2;

不過這次要找FLash的ACR似乎并不那么順利,很難直接從目錄中查找到,需要全局搜一下ACR,不過還好,沒有讓我們搜索太多時(shí)間,在3.3.3章節(jié)中找到了:


file

寄存器的定義如下:


file

關(guān)于16進(jìn)制轉(zhuǎn)2進(jìn)制補(bǔ)0

這里其實(shí)有一個(gè)補(bǔ)0問題,就是對于32bit,0x2究竟是0x0000 0002,還是0x2000 0000呢?回歸本源,這兩種表達(dá)形式哪一個(gè)是2呢?毫無疑問,是第一個(gè);
所以這里的0x2,切換到32bit二進(jìn)制表示就是:0000 0000 0000 0000 0000 0000 0000 0010;可以看到其實(shí)有效賦值是LATENCY,位的值是010,查看寄存器定義:


file

代表了比例,系統(tǒng)時(shí)鐘比FLASH存取周期的值,010對應(yīng)的2,即系統(tǒng)時(shí)間是Flash的兩倍,所以同步的時(shí)候,需要做兩個(gè)周期的延遲用以同步CPU和Flash之間時(shí)鐘;
為什么需要做此配置呢?首先程序都是存放在FLASH里面,CPU需要從FLASH里面取出執(zhí)行指令,所以通信之前需要首先同步時(shí)鐘;那么就需要知道Flash的時(shí)鐘和系統(tǒng)時(shí)鐘(CPU時(shí)鐘)之間的差別;又因?yàn)槲覀兣渲脮r(shí)鐘是72MHz,這里010的時(shí)鐘范圍包含了72MHz;

使能PLL

下面是對于RCC_CR寄存器最后的配置:

*((uint32_t *)RCC_CR) |= 0x01000000;while(!(*((uint32_t *)RCC_CR) >> 25));

還是套路:拆解0x0100 0000,只有高16位有有效值,低16位全零;高16位轉(zhuǎn)換為2進(jìn)制之后值為:0000 0001 0000 0000,所以我們看到對應(yīng)操作的是PLLON位,PLLON位說明如下:


file

寫入1則代表打開PLL,上面我們做了關(guān)于PLL的倍頻的配置,PLL時(shí)鐘源的配置,都是需要在PLL使能之后才會生效,在嵌入式開發(fā)中,所有的配置都是基于設(shè)備/ 組件使能的前提下才會配置生效;
至于while語句和上面配置HSE使能的語句的等待READY的功效是一致的;可以通過查看寄存器定義,25位是PLLRDY,while循環(huán)就是等待這一位置為1,是否需要擔(dān)心其他位有1從而影響循環(huán)判斷?大可不必,因?yàn)?1~26都是Reserved,必然為0,唯一的有效位就是PLLRDY位。
可以看到在RCC初始化的代碼中,每次配置一個(gè)使能都是需要通過while循環(huán)來確認(rèn)配置成功了;

配置PLLCLK為系統(tǒng)時(shí)鐘

最后一部分代碼,讓RCC_CFGR與0x00000002做或運(yùn)算:

*((uint32_t *)RCC_CFGR) |= 0x00000002;while(temp != 0x02){  
        temp = *((uint32_t *)RCC_CFGR) >> 2;
        temp &= 0x03;}

有效為發(fā)生在低16位,0000 0000 0000 0010,有效配置位是最后兩位,即SW位(Switch,切換系統(tǒng)時(shí)鐘之意),解釋如下,可以看到10代表使用PLL的輸出(PLLCLK)作為系統(tǒng)時(shí)鐘:


file

之后的while語句則是輪訓(xùn)查看使能配置是否生效;注意這里的使能生效并沒有采用上面單句while循環(huán)的方式,而是采用賦值方式來進(jìn)行的,就是因?yàn)闀衅渌慌渲脮绊懪袛啵?br/>首先看一下SWS位說明:


file

賦值判斷的方式也是非常巧妙,首先是RCC_CFGR右移(>>)2位,擠掉了SW位,現(xiàn)在SWS(Switch Status)位在最后面,然后將其和0x03進(jìn)行與運(yùn)算,與運(yùn)算的目的就是:0位清零,1位保留原值(或運(yùn)算目的:0位維持原值不變,1位用于置1)。

所以,和temp進(jìn)行與運(yùn)算0x03的其實(shí)是30bit數(shù)(最后兩位已經(jīng)通過右移2位擠掉了):0000 0000 0000 0000 0000 0000 0000 11,所以就是要取用SWS的位的值,當(dāng)返回值為“10”的時(shí)候,即0x02,代表PLL已經(jīng)被設(shè)置為系統(tǒng)時(shí)鐘,說明RCC_CFGR的配置已經(jīng)生效。


關(guān)鍵字:STM32  點(diǎn)亮LED  RCC 引用地址:STM32(2):點(diǎn)亮LED(下)

上一篇:STM32(3):番外篇之Let's GO!
下一篇:STM32(1):點(diǎn)亮LED(上)

推薦閱讀最新更新時(shí)間:2025-04-15 19:31

STM32點(diǎn)亮閃爍LED
1/*本程序?qū)崿F(xiàn)STM開發(fā)板上LED燈紅綠藍(lán)閃爍*/ 2 3 4 5 #include stm32f10x.h // 相當(dāng)于51單片機(jī)中的 #include reg51.h 6 #include stm32f10x_gpio.h 7 /* 8 9 *由于STM32的GPIO工作模式有8種(輸入4種+輸出4種) 10 *在GPIO輸出之前要先對要操作的GPIO進(jìn)行配置 11 知識點(diǎn): 12 一個(gè)結(jié)構(gòu)體 13 typedef struct//結(jié)構(gòu)體 14 { 15 uint16_t GPIO_Pin; 16 GPIOS
[單片機(jī)]
<font color='red'>STM32</font><font color='red'>點(diǎn)亮</font>閃爍<font color='red'>LED</font>燈
STM32——GPIO設(shè)置:快速點(diǎn)亮第一個(gè)LED
簡介 不同的開發(fā)板的原理圖結(jié)構(gòu)也不盡相同,筆者在這里使用野火的MINI-V3(F103VET6)簡易開發(fā)板對GPIO口的設(shè)置做一個(gè)簡單的介紹,并實(shí)現(xiàn)按鍵控制LED燈的亮滅。方便讀者可以快速熟悉并靈活應(yīng)用。 原理圖分析 首先我們來看一下發(fā)光二極管部分和按鍵部分的原理圖。 下面是按鍵的原理圖部分: 在這里,我們將使用KEY1(PA0)來控制紅燈PB5的亮滅。由原理圖可知,其控制LED燈的PB5引腳為低電平時(shí),燈亮。當(dāng)KEY1按下時(shí),PA0引腳由之前的低電平轉(zhuǎn)為高電平(3V3)。明確了目的之后我們就可以分析GPIO口并進(jìn)行設(shè)置了。 GPIO設(shè)置 經(jīng)過上述的功能明確之后,我們將其分為兩大類,分別是輸入類(如按鍵)和輸出類
[單片機(jī)]
<font color='red'>STM32</font>——GPIO設(shè)置:快速<font color='red'>點(diǎn)亮</font>第一個(gè)<font color='red'>LED</font>燈
STM32學(xué)習(xí)筆記-RCC
調(diào)試芯片:STM32F103CBT6 外部晶振:4MHz 初次學(xué)習(xí)ST須知: STM芯片的所有片上外設(shè)都需要手動設(shè)置時(shí)鐘 概念: 三種不同的時(shí)鐘源可被用來驅(qū)動系統(tǒng)時(shí)鐘(SYSCLK): HSI振蕩器時(shí)鐘:由內(nèi)部8MHz的RC振蕩器產(chǎn)生,可直接作為系統(tǒng)時(shí)鐘或在2分頻后作為PLL輸入。HSI RC振蕩器能夠在不需要任何外部器件的條件下提供系統(tǒng)時(shí)鐘。它的啟動時(shí)間比HSE晶體振蕩器短。然而,即使在校準(zhǔn)之后它的時(shí)鐘頻率精度仍較差。(所以通常不用與提供SYSCLK) HSE振蕩器時(shí)鐘:高速外部時(shí)鐘信號,由HSE外部晶體/陶瓷諧振器(較常用)或者HSE用戶外部時(shí)鐘兩種方式產(chǎn)生 PLL時(shí)鐘:時(shí)鐘源輸入,內(nèi)部PLL可以用來倍頻HSI RC的輸出時(shí)
[單片機(jī)]
1.stm32點(diǎn)亮LED
目錄 直接控制LED燈 按鍵控制LED燈 定時(shí)器控制led閃爍 藍(lán)橋杯LED部分電路圖如下圖所示 藍(lán)橋杯G4開發(fā)板LED外設(shè)電路圖 板載8個(gè)LED燈由74HC573鎖存器控制。74HC573是透明的D型鎖存器,當(dāng)使能(G)為高時(shí),Q輸出將數(shù)據(jù)(D)輸入而變。當(dāng)使能為低時(shí),輸出將鎖存在已建立的數(shù)據(jù)電平之上。輸出控制不影響鎖存器內(nèi)部工作,即原輸出保持。 真值表: OE = L LE = H D = L 時(shí) Q = L; OE = L LE = H D = H 時(shí) Q = H; OE = L LE = L 時(shí) Q 不變化 項(xiàng)目準(zhǔn)備 1.CT117E實(shí)驗(yàn)板一個(gè) 2.MDK 工程創(chuàng)建 主函數(shù)
[單片機(jī)]
51單片機(jī)實(shí)驗(yàn)8:led點(diǎn)陣(1):點(diǎn)亮一個(gè)點(diǎn)
開發(fā)板led點(diǎn)陣模塊電路圖如下: 74HC595:74HC595是一個(gè)8位串行輸入、并行輸出的位移緩存器。芯片第11角為數(shù)據(jù)輸入時(shí)鐘線,上升沿有效。芯片第12腳為輸出存儲器鎖存時(shí)鐘線,上升沿有效。芯片第13腳為輸出有效(低電平)。芯片第14腳為串行數(shù)據(jù)輸入。 為表示出輸入74HC595的8位二進(jìn)制數(shù),開發(fā)板加入了led模塊(圖一中綠色所示)。若要使led發(fā)光,則需將JP595接vcc。 OE為輸出有效控制端,低電平有效,所以務(wù)必將JOE短接片短接到GND端。 _nop_();函數(shù)為延時(shí)一個(gè)機(jī)器周期,所對應(yīng)頭文件為intrins.h #include reg52.h #include intrins.h #
[單片機(jī)]
51單片機(jī)實(shí)驗(yàn)8:<font color='red'>led</font>點(diǎn)陣(1):<font color='red'>點(diǎn)亮</font>一個(gè)點(diǎn)
stm8s: GPIO配置,點(diǎn)亮LED!PB4,PB5引腳LED點(diǎn)不亮
最近兩天在做STM8S103的開發(fā),調(diào)完硬件后,就開始編寫軟件了,第一步當(dāng)然又是點(diǎn)亮LED燈了,結(jié)果很尷尬的死活點(diǎn)不亮!后來各種百度,認(rèn)真查看數(shù)據(jù)手冊,才發(fā)現(xiàn)一個(gè)很大的坑,由于粗心大意,沒有看到,做個(gè)筆記,以為備忘。 1、流程 點(diǎn)亮LED,流程跟STM32基本一樣: (1)配置GPIO(STM8S不需要專門配置每個(gè)引腳的時(shí)鐘,最開始的時(shí)候配置系統(tǒng)時(shí)鐘即可) (2)GPIO輸出高低電平 廢話不說,直接上代碼: 2、上代碼 //FUNCKTION: LED燈GPIO口初始化 //PARA : 無 //RETURN : 無 void LED_Config() { GPIO_Init(GPIOB, GPIO_PIN
[單片機(jī)]
stm8s: GPIO配置,<font color='red'>點(diǎn)亮</font><font color='red'>LED</font>!PB4,PB5引腳<font color='red'>LED</font>點(diǎn)不亮
51單片機(jī)開發(fā)板程序----LED流水點(diǎn)亮(C語言)
//實(shí)例6:使用P0口流水點(diǎn)亮8位LED #include reg51.h //包含單片機(jī)寄存器的頭文件 /**************************************** 函數(shù)功能:延時(shí)一段時(shí)間 *****************************************/ void delay(void) { unsigned char i,j; for(i=0;i 250;i++) for(j=0;j 250;j++) ; } /******************************************************* 函數(shù)功能:主函數(shù) *****
[單片機(jī)]
STM32一文通(8) 串口通訊
一.原生串口通訊 原生的串口通信主要是控制器跟串口的設(shè)備或者傳感器通信,不需要經(jīng)過電平轉(zhuǎn)換芯片來轉(zhuǎn)換電平,直接就用TTL電平通信 比如: GPS模塊、GSM模塊、串口轉(zhuǎn)WIFI模塊、HC04藍(lán)牙模塊 二. 串口與PC通訊 USB轉(zhuǎn)串口主要用于設(shè)備跟電腦通信 電平轉(zhuǎn)換芯片一般有CH340、PL2303、CP2102、FT232 使用的時(shí)候電腦端需要安裝電平轉(zhuǎn)換芯片的驅(qū)動 三. RS232標(biāo)準(zhǔn)串口通訊 RS232標(biāo)準(zhǔn)串口主要用于工業(yè)設(shè)備直接通信 電平轉(zhuǎn)換芯片一般有MAX3232,SP3232 四. STM32串口 1. 內(nèi)部結(jié)構(gòu) 寄存器 功能 TX 數(shù)據(jù)發(fā)送 RX 數(shù)據(jù)接收 SC
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 扎囊县| 修文县| 防城港市| 阿克陶县| 雷山县| 乐陵市| 秦皇岛市| 安龙县| 大宁县| 长顺县| 运城市| 双流县| 道真| 睢宁县| 彰化县| 五大连池市| 永德县| 莫力| 神池县| 闻喜县| 黔东| 乐东| 马边| 抚宁县| 鱼台县| 新营市| 福泉市| 遂宁市| 万宁市| 昌邑市| 赣州市| 南城县| 江口县| 宜州市| 北辰区| 洪洞县| 吴忠市| 吴堡县| 凯里市| 潢川县| 泰安市|