999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STM32單片機多串口通信仿真測試技術研究

2015-06-13 12:00:22勇,何
無線電工程 2015年8期
關鍵詞:單片機

郭 勇,何 軍

(南京北方信息控制集團有限公司產品研發中心,江蘇南京211153)

0 引言

STM32單片機是基于高性能Cortex-M3內核的32位單片機,外設功能強大,最大工作頻率72MHz。本文選用的STM32103VET6芯片,有多達5個USART、3個SPI口和2個I2C口,便于產品與上位機的通信。采用基于庫函數的編程方法,能很快地進行產品開發。目前公開的文獻沒有提及無硬件平臺情況下對STM32進行多串口調試的方法,部分文獻有介紹用虛擬串口仿真51單片機,但沒有提及怎樣仿真串口接收通信的情況[1-3]。本文采用基于RealView MDK、VSPD(虛擬串口)和串口調試軟件的聯合仿真調試技術,可以在沒有硬件平臺的情況下,完成多串口收發通信軟件的開發和測試。

1 多串口通信的軟件設計原理

軟件流程圖如圖1所示。

圖1 軟件流程

本文使用的STM32芯片有多達5個USART,使用其中的3個USART(USART1~USART3)。在不進行管腳重映射的情況下,USART1_Tx管腳為PA9,USART1_Rx管腳為 PA10,USART2_Tx管腳為PA2,USART2_Rx管腳為 PA3,USART3_Tx管腳為PB10,USART3_Rx管腳為PB11。軟件的設計采用模塊化,包括RCC時鐘配置模塊,NVIC中斷向量配置模塊,USART1~USART3管腳配置模塊、USART1~USART3初始化模塊,USART1~USART3通信模塊等。

1.1 RCC時鐘設置模塊

采用8 MHz外部晶振作為PLL時鐘,再倍頻到72 MHz。該時鐘作為系統時鐘,待系統時鐘穩定后,再進行各模塊時鐘的分配[4]。時鐘初始化模塊部分代碼如下:

/*使能串口1時鐘,及管腳GPIOA的時鐘*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);∥使能串口2時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);/* 使能串口3引腳GPIOB的時鐘*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);∥使能串口3時鐘

1.2 UASRT通信管腳配置模塊

STM32單片機功能管腳由GPIO管腳進行映射,這里僅給出USART1_Tx和USART1_Rx管腳配置的軟件代碼,USART2和 USART3的管腳配置類似[5]。

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

∥IO口的第九腳

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

∥IO口的速度

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

∥IO口復用推挽輸出

GPIO_Init(GPIOA,&GPIO_InitStructure);

∥初始化USART1的TX口

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

∥IO口的第十腳

GPIO_InitStructure.GPIO_Mode=

GPIO_Mode_IN_FLOATING;∥IO口懸空輸入

GPIO_Init(GPIOA,&GPIO_InitStructure);

∥初始化USART1的RX口

1.3 NVIC中斷向量模塊的配置

NVIC是中斷向量控制器,用來控制多個中斷向量的優先級,在NVIC中設置USART1中斷為最高優先級,USART2次之,USART3中斷優先級最低。本文設置發送為順序發送,接收為中斷響應接收[6]。代碼如下:

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_DeInit();

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

∥使能USART1中斷

NVIC_InitStructure.NVIC_IRQChannel=

USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQChannel;∥使能USART2中斷

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQChannel;∥使能USART3中斷

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

USART1~USART3的搶占優先級相同,USART1的從優先級值最小,所以USART1的優先級別最高。

1.4 USART的通信配置模塊

采用全雙工通信,對USART1進行配置,USART1的波特率115 200 bit/s,數據位8位,停止位1位,無校驗位,無流量控制,接收、發送使能,采用接收中斷方式,USART2和USART3的配置類似。

USART_InitTypeDef USART_InitStructure;

“互聯網+”與傳統產業的協同融合是通過運用移動互聯、云計算、大數據、物聯網等互聯網信息技術對農業、工業、服務業等產業鏈各環節進行滲透和嵌入,通過提高產業技術水平,創造新業態、新商業流程、新商業模式,實現產業鏈上下游的垂直合作或行業間的橫向整合。同時,產業協同融合過程中還能夠創新產業價值鏈模式,創新后的價值鏈接節點融合了互聯網產業價值,與原產業相比,融合產業帶來了更高的附加值以及更大的利潤空間。總體來說,憑借“互聯網+”信息技術進行的產業融合,能夠提高產業技術水平以及產業附加值,能夠實現傳統產業結構優化升級目標,核心內涵見圖1。

USART_InitStructure.USART_BaudRate=115200;

∥設定傳輸速率

USART_InitStructure.USART_WordLength=USART_WordLength_8b;∥設定8位數據位

USART_InitStructure.USART_StopBits=USART_StopBits_1;∥設定1個停止位

USART_InitStructure.USART_Parity=USART_Parity_No;∥無校驗位

USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;∥使用發送和接收功能

∥初始化USART1

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);∥使能USART1接收中斷

USART_Cmd(USART1,ENABLE);∥使能 USART1

1.5 USART的中斷接收模塊

在該中斷響應函數中,當USART1接收事件完成時,產生中斷信號,通知微處理器進行串口通信的接收處理[7,8]。

void USART1_IRQHandler(void)

{

static unsigned char rx1_num;

unsigned char temp_rx;

if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)∥如果是接收中斷

{

uart1_rx[rx1_num]=temp_rx;

}

rx1_num++;∥靜態變量,記錄USART1接收數據的個數

}

當USART2和USART3產生接收中斷時,進入相應的中斷函數進行處理。

2 虛擬串口和仿真串口的綁定

傳統的USART調試必須有相應的開發板,連接開發板的串口和上位機的串口,開發軟件RealView MDK在調試時,有3個串口的仿真輸出窗口UART#1,UART#2,UART#3,但這3個窗口只能仿真串口輸出,不能仿真串口的接收通信。采用虛擬串口軟件VSPD(Virtual Serial Port Driver),可以虛擬出多對串口,如圖2所示。分別把每一對虛擬串口中的一個與STM32單片機的每個串口進行綁定,就可以進行串口的通信仿真測試。

圖2 產生的3對虛擬串口

本文用 VSPD軟件虛擬了3對串口,分別是COM4和 COM5、COM6和 COM7、COM8 和 COM9。COM4發送數據時,COM5接收數據,反之亦然。為了仿真 STM32單片機3個串口的收發通信,把UART1和COM4綁定在一起,把 UART2和 COM6綁定在一起,把UART3和COM8綁定在一起。因為虛擬串口COM4和COM5互相通信,所以用COM5發數據,可以模擬串口COM4的中斷接收數據。配置文件為COM4_OUT.txt,把后綴名改為.ini。內容如下[9,10]:

MODE COM4 115200,0,8,1

ASSIGN COM4<S1IN> S1OUT

MODE COM6 115200,0,8,1

ASSIGN COM6<S2IN> S2OUT

MODE COM8 115200,0,8,1

ASSIGN COM8<S3IN> S3OUT

ASSIGN

文件的作用是配置COM4的波特率為115 200 bit/s,8個數據位,1個停止位,無校驗位,把COM4和STM32的第1個串口綁定在一起,配置COM6的波特率與COM4一樣,綁定COM6和STM32的第2個串口在一起,依次類推。把COM4_OUT.ini文件放在工程文件中,編譯后,就可以利用 RealView MDK軟件和串口調試軟件進行串口的通信仿真測試。

3 USART通信發送、接收數據測試

3.1 發送數據測試

設置 3個發送數組,uart1_tx[64]、uart2_tx[64]、uart3_tx[64],因為 COM4 和 COM5 相連接,當COM4發送數據時,COM5接收數據,由圖3可知,當 COM4發送數組 uart1_tx[64]的數據時,COM5的接收區正確顯示數組uart1_tx[64]的數據。COM8和COM9相連,由圖4可知,COM9的接收區正確顯示數組 uart3_tx[64]的數據[11]。

uart1_tx[64]={0x11,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x1f,0x3a,0x5b,0x2c,0x2d,0x3e,0x4f,0x4c,0x2d……

0xaa,0xab,0xac,0xad,0xae,0xaf,0xaf,0xaf};

uart3_tx[64]={0x31,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x3f,……

0x8a,0x8b,0x6c,0x6d,0xe7,0xf7,0xa3,0xb5,

0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xcf,0xcf};

圖3 COM5接收數據測試

圖4 COM9接收數據測試

3.2 接收數據測試

用 uart1_rx[64]、uart2_rx[64]和 uart3_rx[64]分別模擬COM4、COM6和COM8中斷接收數據,這時COM5、COM7和COM9分別發出數據。該實驗用于測試多串口中斷接收通信的準確率[12]。

圖5 uart1_rx接收前后對比

圖7 COM5發送數據

對比圖5和圖7可知,uart1_rx[64]正確接收到COM5發出的64個數據,表明COM4中斷接收通信正確。對比圖6和圖8可知,uart2_rx[64]正確接收到COM7發送的64個數據,表明COM6中斷接收通信正確。

圖8 COM7發送數據

4 結束語

針對目前廣泛使用的STM32單片機,介紹一種使用VSPD(虛擬串口)結合串口調試軟件進行多串口收發通信的仿真測試方法。論述了虛擬串口和仿真串口的綁定方法,并給出了相應模塊的軟件代碼。仿真實驗結果表明,該方法可以在沒有硬件平臺的條件下,精確地進行多個串口發送和接收通信的測試,并能得到很好的結果。

[1]李 寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008.

[2]喻金錢,喻 斌.STM32F系列ARM Cortex-M3核微控制器開發與應用[M].北京:清華大學出版社,2011.

[3]劉波文.ARM Cortex-M3應用開發實例詳解[M].北京:電子工業出版社,2011.

[4]張愛民,王云沼.STM32微控制器的可靠串口通信技術研究[J].單片機與嵌入式系統,2013,10(2):21 -24.

[5]陳 宮,王三勝,張慶榮,等.基于STM32F103VCT6的微位移控制系統設計[J].現代電子技術,2012,35(3):144-147.

[6]郭 勇,楊 歡.RS(63,45)編譯碼器的設計與 FPGA實現[J].無線電通信技術,2011,37(2):54 -58.

[7]勾慧蘭,劉光超.基于STM32的最小系統及串口通信的實現[J].工業控制計算機,2012,25(9):26-29.

[8]郭 勇,陳艷玲.多發多收網絡仿真器的FPGA實現及測試[J].無線電工程,2013,43(1):4 -6.

[9]索云天,梁龍學,林沖鋒.基于STM32的多點溫度采集系統設計[J].蘭州交通大學學報,2013,32(6):61 -63.

[10]薛震宇.基于虛擬串口的嵌入式系統測試卡設計[J].儀表技術,2008,10(2):54 -58.

[11]郭 勇,何 軍.基于RS IP核編譯碼器的設計與FPGA 實現[J].無線電通信技術,2015,41(1):90-93.

[12]孫林軍,賀鋒濤.基于STM32F103控制液晶的接口實現[J].電視技術,2013,37(1):77-79.

猜你喜歡
單片機
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機在仿真中要注意的幾點問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機的三維LED點陣設計
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個全新PIC單片機系列
基于Proteus的單片機控制系統的仿真設計
主站蜘蛛池模板: 亚洲高清无在码在线无弹窗| 麻豆精品视频在线原创| 国产污视频在线观看| 亚洲无限乱码一二三四区| 午夜福利在线观看入口| 国产成人高清精品免费软件| a网站在线观看| 欧美自慰一级看片免费| 波多野结衣在线一区二区| 国产成人8x视频一区二区| 国产成人乱码一区二区三区在线| 国产办公室秘书无码精品| 亚洲精品波多野结衣| 一级毛片视频免费| 亚洲第一精品福利| 精品国产美女福到在线不卡f| 丰满人妻一区二区三区视频| 又爽又大又黄a级毛片在线视频| 亚洲伊人电影| 亚洲欧洲一区二区三区| 亚洲精品无码成人片在线观看| 欧美一区二区精品久久久| 日韩黄色大片免费看| 国产香蕉在线视频| 一本色道久久88| 女人18一级毛片免费观看| 国产国产人成免费视频77777| 国产精品13页| 亚洲中文字幕在线一区播放| 美女国产在线| 99视频免费观看| 亚洲性一区| 国产91精品最新在线播放| 免费va国产在线观看| 视频一区亚洲| 午夜电影在线观看国产1区| 91久久大香线蕉| 欧美成人午夜影院| 欧美性色综合网| 成人免费黄色小视频| 日韩欧美中文字幕在线精品| 国产Av无码精品色午夜| 喷潮白浆直流在线播放| 日韩视频免费| 午夜福利无码一区二区| 99re在线视频观看| 欧美日韩亚洲国产主播第一区| 第一页亚洲| 国产香蕉在线视频| 四虎在线观看视频高清无码| 欧美精品黑人粗大| 欧美日韩中文国产| 精品国产免费观看| 国产经典在线观看一区| 91成人在线免费视频| 亚洲午夜天堂| 任我操在线视频| 无码人中文字幕| www.亚洲一区| 中文字幕2区| 国产成人精彩在线视频50| 91精品啪在线观看国产91| 极品国产在线| 日本午夜影院| 国产亚洲欧美另类一区二区| 国产网站免费| 综合色区亚洲熟妇在线| 亚洲乱码视频| 视频二区亚洲精品| 夜夜操狠狠操| 午夜福利在线观看入口| 国内精品久久久久久久久久影视| 亚洲成人一区二区| 亚洲精品无码不卡在线播放| 强奷白丝美女在线观看| 91成人免费观看| 国产精品一区二区国产主播| 亚洲精品国偷自产在线91正片 | 成人在线观看不卡| 91探花在线观看国产最新| 国产小视频网站| 国产成人综合日韩精品无码不卡|