• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種查表與插值法在微控制器中的實(shí)現(xiàn)

      2016-01-11 08:47:49史永勝許夢(mèng)蕓王喜鋒
      關(guān)鍵詞:計(jì)算速度計(jì)算精度微控制器

      史永勝, 胡 雙, 許夢(mèng)蕓, 王喜鋒

      (陜西科技大學(xué) 電氣與信息工程學(xué)院, 陜西 西安 710021)

      ?

      一種查表與插值法在微控制器中的實(shí)現(xiàn)

      史永勝, 胡雙, 許夢(mèng)蕓, 王喜鋒

      (陜西科技大學(xué) 電氣與信息工程學(xué)院, 陜西 西安710021)

      摘要:在微控制器中斷程序中,大量的長(zhǎng)時(shí)間計(jì)算是不可取的.為了提高計(jì)算效率,提出了一種在軟件上將調(diào)用編譯器中函數(shù)庫求解復(fù)雜函數(shù)的方法,改為查表與插值的方法.這種查表插值方法的引入,在理論上能提高編譯器在該段程序的編譯效率和程序在微控制器中的執(zhí)行速度,具有高效性.本文以STM32F407VGT6微控制器為硬件平臺(tái),設(shè)計(jì)了控制變量法的對(duì)比實(shí)驗(yàn).結(jié)果表明,該方法能有效減少程序運(yùn)行時(shí)間,適用于大多復(fù)雜函數(shù),并且適用于不同主頻的微控制器,從而驗(yàn)證了該方法的通用性與高效性.

      關(guān)鍵詞:查表; 插值; 微控制器; 計(jì)算速度; 計(jì)算精度

      0引言

      在微處理器程序運(yùn)行的過程中,特殊情況下需要計(jì)算復(fù)雜函數(shù)在某一點(diǎn)的值[1],如開方運(yùn)算、三角函數(shù)與反三角函數(shù)運(yùn)算、指數(shù)與對(duì)數(shù)運(yùn)算等.如果在中斷服務(wù)程序中執(zhí)行類似操作,會(huì)導(dǎo)致運(yùn)算時(shí)間太長(zhǎng).這是因?yàn)橥瓿蛇@些工作的計(jì)算一般都是通過調(diào)用編譯器的math.h文件中的函數(shù)庫來完成的,而這種方法編譯效率偏低[2].math.h頭文件是針對(duì)所有處理器的,其運(yùn)算函數(shù)都是基于定點(diǎn)CPU和標(biāo)準(zhǔn)算法(IEEE-754)[3],并沒有預(yù)見使用FPU(浮點(diǎn)運(yùn)算單元)的情況,因而需要很多指令和復(fù)雜的過程才能完成運(yùn)算,這就增加了運(yùn)算時(shí)間,這是開發(fā)者和用戶所不希望看到的.

      在這種情況下,拋棄編譯器的函數(shù)庫,轉(zhuǎn)向通用的查表與插值[4]方法就應(yīng)運(yùn)而生.查表與插值的方法在插入的節(jié)點(diǎn)足夠多的情況下,只要求硬件內(nèi)存足夠大,通過軟件的方式[5]計(jì)算即可.其可行性高,若微控制器一旦使用了這種方法,定時(shí)精度將有效提高,故在測(cè)頻、信號(hào)的采樣與恢復(fù)、逆變器、電機(jī)控制和無線充電技術(shù)等方面的應(yīng)用將更加高效.其高效性是調(diào)用math.h的方式所無法企及的.

      本文采用控制變量法,以微控制器STM32F407VGT6[6]為硬件平臺(tái),通過設(shè)計(jì)實(shí)驗(yàn)比較了兩種方式下程序的運(yùn)行時(shí)間,得出了將查表與插值算法引入微控制器中,可帶來立竿見影的提升效果的結(jié)論.

      1查表與插值在微控制器中的實(shí)現(xiàn)

      1.1查表與插值法介紹

      查表是通過調(diào)用位于內(nèi)存中的二維或多維數(shù)組中的值來實(shí)現(xiàn)的方法,具有計(jì)算量小的特點(diǎn).插值法是函數(shù)逼近的一種重要方法,是數(shù)值計(jì)算的基本課題.對(duì)于具有唯一插值函數(shù)的多項(xiàng)式插值和分段多項(xiàng)式插值,對(duì)其中的多項(xiàng)式插值主要討論n次多項(xiàng)式插值的方法,即給定n+1各點(diǎn)處的函數(shù)值后,怎樣構(gòu)造一個(gè)n次插值多項(xiàng)式的方法.現(xiàn)已成熟的插值法包括lagrange插值、newton插值、hermite插值、分段多項(xiàng)式插值及樣條插值[7]等方法.

      本文所使用的插值法方法類似于三次樣條插值,采用查表與插值結(jié)合的方式.在工程上使用三次插值函數(shù)一般能滿足足夠的計(jì)算精度.該方法可應(yīng)用于實(shí)現(xiàn)一些數(shù)字量到模擬量的輸出.輸出數(shù)字量頻率越高,經(jīng)過采樣還原后輸出的模擬量的諧波含量越低.如在進(jìn)行逆變器SPWM輸出時(shí),需要在微控制器中提高開關(guān)頻率,即提高定時(shí)器的定時(shí)頻率,但中斷服務(wù)函數(shù)內(nèi)進(jìn)行正弦計(jì)算時(shí)占用CPU時(shí)間較長(zhǎng).這里采用三次插值后,能有效減少計(jì)算所用時(shí)間,提高定時(shí)頻率.在節(jié)點(diǎn)足夠多的情況下,最終模擬量輸出精度不僅不會(huì)降低,反而會(huì)提高.

      1.2查詢表的生成

      對(duì)于函數(shù)f(x),依據(jù)精度將該函數(shù)的定義域在特定區(qū)間內(nèi)等分為N份,即構(gòu)成N+1個(gè)節(jié)點(diǎn),用Matlab、VisualC++或其它工具求出每個(gè)節(jié)點(diǎn)的函數(shù)值,輸出數(shù)據(jù)表,并將數(shù)據(jù)表以浮點(diǎn)型常量形式放入到微控制器內(nèi)存中.

      在該方法中,求任何點(diǎn)的函數(shù)值都需要四個(gè)節(jié)點(diǎn),因此需在函數(shù)表內(nèi)需要給出至少N+3個(gè)點(diǎn)的值,故要加入定義域外的一些節(jié)點(diǎn),如節(jié)點(diǎn)N-1、N+1、N+2,加上定義域內(nèi)的N個(gè)節(jié)點(diǎn),共N+3個(gè)節(jié)點(diǎn),這樣才能覆蓋整個(gè)定義域內(nèi)的所有值.

      此方法需要較大的內(nèi)存空間,對(duì)微控制器有一定要求.針對(duì)特殊應(yīng)用可以實(shí)現(xiàn)若干個(gè)函數(shù),不需要囊括所有函數(shù).比如,在逆變器、變頻器等應(yīng)用編程中,只需用此方法求出正弦函數(shù)的值;對(duì)于可穿戴設(shè)備中的加速度傳感器(角度傳感器)的傾角求值,亦可以用此方法求出反正弦或反正切的值[8].

      1.3插值求解的流程

      在系統(tǒng)初始化后,先生成出需要調(diào)用的函數(shù)的N+3個(gè)節(jié)點(diǎn)的表格;函數(shù)原型中,將輸入?yún)?shù)的值映射到[0,1]內(nèi); 根據(jù)輸入?yún)?shù)和表格長(zhǎng)度,找出自變量的大致位置,取整為index,通過查表找出距離index最近的四個(gè)節(jié)點(diǎn),分別為index-1、index、index+1和index+2,它們對(duì)應(yīng)的函數(shù)值分別為:

      a=Table[index-1]

      b=Table[index+0]

      c=Table[index+1]

      d=Table[index+2]

      再通過作差,求實(shí)際輸入自變量的小數(shù)部分fract,根據(jù)如下所述式(1)、(2)、(3)、(4)計(jì)算三次插值的系數(shù)wa,wb,wc,wd;最后根據(jù)以上各式和式(1~5),輸出返回函數(shù)值a*wa+b*wb+c*wc+d*wd.

      (1)

      (2)

      (3)

      (4)

      value=a*wa+b*wb+c*wc+d*wd

      (5)

      軟件的具體流程如圖1所示.

      圖1 系統(tǒng)軟件流程圖

      程序如下:

      float arm_sin_f32(float x)

      {

      float fract, in;

      unsigned int index, tableSize;

      float wa, wb, wc, wd;

      float a, b, c, d;

      int n;

      tableSize=(unsigned int)TABLE_SIZE;

      in=x*0.159154943;

      n=(int)in;

      in=in-(float) n;

      index=(unsigned int)(tableSize*in);

      fract=((float) tableSize*in)-(float)index;

      a=sinTable[index-1];

      b=sinTable[index];

      c=sinTable[index+1];

      d=sinTable[index+2];

      wa=-0.166666667*fract*fract*fract-

      0.333333333* fract+0.5*fract*fract;wb= 0.5*fract*fract*fract-

      fract*fract+0.5* fract+1.0;

      wc=-0.5*fract*fract*fract+

      0.5*fract*fract+fract;

      wd=0.166666667*fract*fract*fract-

      0.166666667*fract;

      return (a*wa+b*wb+c*wc+d*wd);

      }

      2應(yīng)用實(shí)例

      2.1驗(yàn)證平臺(tái)選擇

      在逆變器或變頻器中產(chǎn)生SPWM所采用的自然采樣法,通常是使用正弦波調(diào)制三角波的形式,需要實(shí)時(shí)計(jì)算正弦值,這時(shí)采用查表與插值的方法就能大大減少程序運(yùn)行時(shí)間.CPU能在很短的周期內(nèi)處理大量的數(shù)據(jù)采集、信號(hào)分析與輸出控制任務(wù),這不僅給軟件調(diào)試帶來了方便,而且還能大大提升定時(shí)精度、提高載波的頻率,根據(jù)SPWM的原理,其輸出的SPWM的效果也更接近標(biāo)準(zhǔn)正弦波[9].

      ST(意法半導(dǎo)體)推出了以基于ARM®CortexTM-M4為內(nèi)核的STM32F4系列高性能微控制器,其采用90納米的NVM 工藝和ART(自適應(yīng)實(shí)時(shí)存儲(chǔ)器加速器,Adaptive Real-Time MemoryAcceleratorTM).

      ART技術(shù)使得程序零等待執(zhí)行,提升了程序執(zhí)行的效率,從而將Cortext-M4的性能發(fā)揮到了極致,使得STM32F4系列可達(dá)到168 MHz.自適應(yīng)實(shí)時(shí)加速器能夠完全釋放Cortex-M4內(nèi)核的性能[10];當(dāng)CPU 工作于所有允許的頻率(≤168 MHz)時(shí),在閃存中運(yùn)行的程序,可以達(dá)到相當(dāng)于零等待周期的性能.

      STM32F4系列微控制器集成了單周期DSP指令和FPU(Floating Point Unit,浮點(diǎn)單元),提升了計(jì)算能力,可以進(jìn)行一些復(fù)雜的計(jì)算和控制.要說明該方法的可行性和通用性,需要主頻較高、內(nèi)存較大的微控制器,而STM32F4能滿足這兩個(gè)條件.同時(shí),作為嵌入式技術(shù)的一大進(jìn)步,STM系列微控制器結(jié)合了低成本、低功耗和更多性能等特點(diǎn)[11].

      現(xiàn)以ST公司的32位微控制器STM32F407VGT6為平臺(tái),以MDK4.72a和IAR Embedded Workbench 兩種不同編譯器的軟件為開發(fā)環(huán)境,進(jìn)行了對(duì)比實(shí)驗(yàn)[12].

      2.2驗(yàn)證流程

      2.2.1查表數(shù)組的生成

      在本實(shí)例中,采用在Visual C++下輸出正弦函數(shù)在一個(gè)周期內(nèi)256個(gè)節(jié)點(diǎn)的值,將區(qū)間[0,2pi]進(jìn)行255份等分,即N=255,共N+1=256個(gè)節(jié)點(diǎn).根據(jù)章節(jié)1.2中描述與分析,需要N+3個(gè)節(jié)點(diǎn)的值,所以主程序的循環(huán)中應(yīng)從-1開始,止于257,共258個(gè)點(diǎn)的值:

      for(n = -1; n < (tableSize + 1); n++)

      {

      sinTable[n+1]=sin(2*pi*n/tableSize);

      }

      并將sinTable[]數(shù)組定義為32位浮點(diǎn)型常量來提高計(jì)算精度.

      2.2.2在MDK環(huán)境下實(shí)驗(yàn)

      按照上述流程在MDK4.72a下編寫程序.

      第一,先將STM32F407VGT6的主頻設(shè)定到最高值168 MHz,經(jīng)過實(shí)驗(yàn)比較直接調(diào)用編譯器函數(shù)庫與查表和插值的方法,采用控制其它條件不變的方式,連續(xù)求500 000次1.5 rad對(duì)應(yīng)的正弦值,其實(shí)驗(yàn)結(jié)果如圖2與圖3所示.對(duì)應(yīng)的調(diào)用函數(shù)庫所用時(shí)間為0.354 s,查表與插值法用時(shí)0.327 s.

      第二,主頻在8 MHz時(shí)得到的結(jié)果如圖4與圖5所示.對(duì)應(yīng)的調(diào)用函數(shù)庫所用時(shí)間為7.443 s,查表與插值法用時(shí)6.88 s.

      第三,將主頻設(shè)定到24 MHz、48 MHz、72 MHz、96 MHz、120 MHz、144 MHz等,將所得到的結(jié)果匯總?cè)绫?和表2所示.

      圖2 最高主頻168 MHz調(diào)用函數(shù)庫所用時(shí)間

      圖3 最高主頻168 MHz下插值所用時(shí)間

      圖4 主頻8 MHz下調(diào)用函數(shù)庫所用時(shí)間

      圖5 主頻8 MHz下插值所用時(shí)間

      2.2.3在IAR環(huán)境下驗(yàn)證

      IAR Embedded Workbench 中包含一個(gè)全軟件的模擬程序 (Simulator).用戶不需要任何硬件支持就可以模擬各種ARM 內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境.從中可以了解和評(píng)估IAR的功能和使用方法.

      現(xiàn)在將程序移植到具有更高編譯效率的IAR Embedded Workbench中,其結(jié)果如圖6與圖7所示.調(diào)用函數(shù)庫所用時(shí)間為0.339 s,查表與插值法用時(shí)0.321 s,也能得到明顯的運(yùn)算效率提升的結(jié)果,而且效果更佳.

      圖6 IAR下主頻168 MHz時(shí)調(diào)用函數(shù)庫所用時(shí)間

      圖7 IAR下主頻168 MHz時(shí)插值所用時(shí)間

      使用邏輯分析儀捕捉上述情況微控制器輸出的電平,高電平的寬度表示該方法計(jì)算500 000次正弦值所用的時(shí)間,圖2、圖4、圖6等為調(diào)用庫函數(shù)的方式在LED3管腳輸出的波形,而圖3、圖5、圖7等為使用查表和插值的方法在LED4管腳輸出的波形.比較圖2與圖3,圖4與圖5,圖6與圖7的高電平時(shí)間,可知,無論高頻低頻或者不同的編譯器,插值法較調(diào)用編譯器函數(shù)庫更高效[13].

      記錄各個(gè)主頻下的效率提升,如表1和表2所示.從8 MHz到168 MHz的不同主頻等級(jí),效率提升在7.5%到7.6%之間,由此可知,此方法在不同主頻的處理器上也會(huì)有有效的效率提升[14].因此,將該方法移植到其它微控制器中,亦具有同樣的效果,故具有通用性.

      表1 不同主頻下效率的提升(1)

      表2 不同主頻下效率的提升(2)

      根據(jù)C代碼編譯后的匯編語句,也可比較兩者的效率,如圖8所示,math.h中sinf函數(shù)編譯后生成7條匯編指令,而arm_sin_f32函數(shù)編譯后只有5條指令,說明在編譯器的優(yōu)化下,插值法編寫的函數(shù)比函數(shù)庫經(jīng)過編譯后會(huì)更精簡(jiǎn)、高效.

      圖8 兩種方法下編譯效率對(duì)比

      其程序如下:

      int main(void)

      {

      unsigned int Num=0;

      SystemInit();//系統(tǒng)初始化

      SystemCoreClockUpdate();//時(shí)鐘

      STM_EVAL_LEDOff(LED3);//輸出低

      STM_EVAL_LEDInit();

      delay_ms(500);

      STM_EVAL_LEDOn(LED3);

      for(CirNum=0;Num<500000;Num++){

      sin_value = sinf(1.5);

      }

      STM_EVAL_LEDOff(LED3);

      STM_EVAL_LEDOn(LED4);

      for(Num=0;Num<500000;Num++){

      sin_value = arm_sin_f32(1.5);

      }

      STM_EVAL_LEDOff(LED4);

      }

      其中,STM_EVAL_LEDOn(LED3)為在LED3管腳輸出高電平,采用庫函數(shù)sinf計(jì)算500 000次后,執(zhí)行STM_EVAL_LEDOff(LED3)后在LED3管腳輸出低電平;STM_EVAL_LEDOn(LED4)為在LED4管腳輸出高電平,采用庫函數(shù)arm_sin_f32計(jì)算500 000次后,執(zhí)行STM_EVAL_LEDOff(LED4)后在LED4管腳輸出低電平.

      3結(jié)論

      通過上述大量實(shí)驗(yàn)可得出這樣的結(jié)論:使用微控制器求解復(fù)雜函數(shù)值時(shí),查表與插值法在處理器任何主頻下、在不同編譯效率的編譯器下,均較直接調(diào)用編譯器函數(shù)庫的方式能更有效地提升處理器運(yùn)算效率,經(jīng)計(jì)算效率提升7.5%.處理器運(yùn)算效率的提升具有現(xiàn)實(shí)意義.

      同時(shí),驗(yàn)證了該方法的可行性、通用性與高效性.雖然對(duì)微控制器的內(nèi)存大小有一定要求,這是因?yàn)樾枰崆吧刹樵儽恚窃跍y(cè)頻、信號(hào)的采樣與恢復(fù)、逆變器、電機(jī)控制和無線充電技術(shù)等領(lǐng)域內(nèi),所使用的微控制器大多數(shù)能達(dá)到這一要求,充分說明此方法具備可行性,后期可以通過適量的算法,在不影響功能的情況下減少內(nèi)存使用,從而使內(nèi)存使用、效率提升等更加均衡.

      參考文獻(xiàn)

      [1] 劉小明,洪一.基于查找表和Taylor展開的正余弦函數(shù)的實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009(13):165-170.

      [2] 李善鋒,劉敬猛,陳柏成,等.一種嵌入式NC代碼編譯器的設(shè)計(jì)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2012(2):45-48,53.

      [3] 竇偉,黃念恙.單片機(jī)控制的正弦波逆變電源[J].電力電子技術(shù),2004,38(6):94-96.

      [4] 許玲,程小琰.C8051 F020單片機(jī)的特點(diǎn)及其在通信系統(tǒng)中的應(yīng)用[J].河南機(jī)電高等??茖W(xué)校學(xué)報(bào),2006,14(6):15-16.

      [5] 徐偉.一種在FPGA上實(shí)現(xiàn)32位浮點(diǎn)正弦函數(shù)的運(yùn)算[J].山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,22(3):93-96.

      [6] 張?jiān)?插值算法在嵌入式系統(tǒng)中的應(yīng)用[J].南京廣播電視大學(xué)學(xué)報(bào),2010(4):101-103.

      [7] 劉云,應(yīng)康,辛煥海,等.基于二次插值法的光伏發(fā)電系統(tǒng)控制策略[J].電力系統(tǒng)自動(dòng)化,2012,36(21):29-35.

      [8] 任紅萍,程玉民,張武.改進(jìn)的移動(dòng)最小二乘插值法研究[J].工程數(shù)學(xué)學(xué)報(bào),2010,27(6):1 021-1 029.

      [9] 陳浩,華燈鑫,張毅坤,等.米散射激光雷達(dá)剖面數(shù)據(jù)三次樣條垂直水平插值法[J].物理學(xué)報(bào),2014,63(15):167-174.

      [10] 陳東,張軍明,錢照明.一種具有頻率變化適應(yīng)性的并網(wǎng)逆變器改進(jìn)型重復(fù)控制方法[J].電工技術(shù)學(xué)報(bào),2014,29(6):64-70.

      [11] Smeti A.,Charga W.Implementation of a predictive controller on the STM32 board.control[J].Decision and Information Technologies,2013,21:250-253.

      [12] 張雷,張國(guó),邱亞琴.Lagrange 插值的改進(jìn)算法研究及誤差分析[J].電力系統(tǒng)保護(hù)與控制,2014,42(16):66-70.

      [13] 郭樂,潘濟(jì)猛,盧家力,等.插值算法在智能變電站中的應(yīng)用[J].電力自動(dòng)化設(shè)備,2010,30(10):103-109.

      [14] 史文嬌,岳天祥,石曉麗,等.土壤連續(xù)屬性空間插值方法及其精度的研究進(jìn)展[J].自然資源學(xué)報(bào),2012,27(1):163-175.

      Implementation of a look-up table and

      interpolation in micro controller

      SHI Yong-sheng, HU Shuang, XU Meng-yun, WANG Xi-feng

      (College of Electrical and Information Engineering, Shaanxi University of Science & Technology, Xi′an 710021, China)

      Abstract:A huge amount of computations with a long time are not desirable in micro controller interrupt program.In order to improve the computational efficiency,a method is proposed that calling the compiler function library for the complex function is changed into a look-up table and interpolation in the software.The introduction of the look-up table and interpolation method can improve the efficiency of the compiler in the program and the program′s execution speed in the micro controller,it has a high efficiency.In this paper, the micro controller STM32F407VGT6 is treated as the hardware platform,and it designs variable method of the contrast experiment.The results show that the method can effectively reduce the running time of the program, and it is suitable for most complex functions and micro controllers with different frequency,it verifies the method′s universality and high efficiency.

      Key words:look-up table; interpolation; micro controller; caculating speed; caculating accuracy

      中圖分類號(hào):TP311; TP332

      文獻(xiàn)標(biāo)志碼:A

      文章編號(hào):1000-5811(2015)02-0148-06

      作者簡(jiǎn)介:史永勝(1964-),男,陜西西安人,教授,博士,研究方向:開關(guān)電源與驅(qū)動(dòng)技術(shù)、LED顯示技術(shù)及新材料開發(fā)

      基金項(xiàng)目:陜西省教育廳專項(xiàng)科研計(jì)劃項(xiàng)目(12JK0494); 陜西科技大學(xué)博士科研啟動(dòng)基金項(xiàng)目( BJ08-07)

      收稿日期:*2014-11-29

      猜你喜歡
      計(jì)算速度計(jì)算精度微控制器
      淺談小學(xué)數(shù)學(xué)教學(xué)中學(xué)生計(jì)算能力的培養(yǎng)與提高
      學(xué)周刊(2019年3期)2019-01-11 11:33:48
      基于SHIPFLOW軟件的某集裝箱船的阻力計(jì)算分析
      廣東造船(2018年1期)2018-03-19 15:50:50
      小學(xué)生數(shù)學(xué)思維能力培養(yǎng)的幾種策略
      物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
      電子制作(2017年14期)2017-12-18 07:07:58
      美國(guó)將造超級(jí)計(jì)算機(jī)之王?速度超天河二號(hào)30倍
      探析小學(xué)數(shù)學(xué)教學(xué)中如何提升學(xué)生的計(jì)算能力
      單元類型和尺寸對(duì)拱壩壩體應(yīng)力和計(jì)算精度的影響
      鋼箱計(jì)算失效應(yīng)變的沖擊試驗(yàn)
      Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
      最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
      岳普湖县| 胶南市| 双鸭山市| 高阳县| 浑源县| 茂名市| 高台县| 威海市| 静乐县| 淄博市| 宜丰县| 通海县| 阳山县| 磐石市| 宣城市| 海口市| 光泽县| 赤水市| 竹北市| 牙克石市| 绥滨县| 孙吴县| 莆田市| 高雄县| 葵青区| 格尔木市| 拜城县| 从江县| 老河口市| 新宁县| 六盘水市| 惠来县| 丰宁| 金沙县| 舞钢市| 鄢陵县| 南充市| 株洲县| 寿光市| 新河县| 资源县|