USART:通用同步/異步串行接收/發送器

      網友投稿 1391 2025-03-31

      USART:(Universal Synchronous/Asynchronous Receiver/Transmitter) 通用同步/異步串行接收/發送器

      USART是一個全雙工通用同步/異步串行收發模塊,該接口是一個高度靈活的串行通信設備。

      特點:

      全雙工操作(相互獨立的接收數據和發送數據);

      2. 同步操作時,可主機時鐘同步,也可從機時鐘同步;

      3. 獨立的高精度波特率發生器,不占用定時/計數器;

      4. 支持5、6、7、8和9位數據位,1或2位停止位的串行數據楨結構;

      5. 由硬件支持的奇偶校驗位發生和檢驗;

      6. 數據溢出檢測;

      7. 幀錯誤檢測;

      8. 包括錯誤起始位的檢測噪聲濾波器和數字低通濾波器;

      9. 三個完全獨立的中斷,TX發送完成、TX發送數據寄存器空、RX接收完成;

      10.支持多機通信模式;

      11.支持倍速異步通信模式。

      組成:

      USART收發模塊一般分為三大部分:時鐘發生器、數據發送器和接收器。控制寄存器為所有的模塊共享。

      時鐘發生器由同步邏輯電路(在同步從模式下由外部時鐘輸入驅動)和波特率發生器組成。發送時鐘引腳XCK僅用于同步發送模式下,

      發送器部分由一個單獨的寫入緩沖器(發送UDR)、一個串行移位寄存器、校驗位發生器和用于處理不同幀結構的控制邏輯電路構成。使用寫入緩沖器,實現了連續發送多幀數據無延時的通信。

      接收器是USART模塊最復雜的部分,最主要的是時鐘和數據接收單元。數據接收單元用作異步數據的接收。除了接收單元,接收器還包括校驗位校驗器、控制邏輯、移位寄存器和兩級接收緩沖器(接收UDR)。接收器支持與發送器相同的幀結構,同時支持幀錯誤、數據溢出和校驗錯誤的檢測。

      舉例:

      STM32 USART的使用(基于庫函數版本)

      步驟說明:

      對中斷需要用到的的默認的兩個管腳PA9和PA10的模式進行設置.

      USART:通用同步/異步串行接收/發送器

      * 注意:不要忘記RCC的設置!STM32的結構決定了用任何一個外設 * 就必須設置相應的使能時鐘。USART1的使能時鐘位是在APB2中的 * 本例中對應函數UART1_GPIO_Configuration()

      * 2: 對USART的數據格式進行設置,即發送數據的數據位、校驗位等.

      * 本例對應函數為UART1_GPIO_Configuration()

      * 注:對于數據是以上升沿還是下降沿有效,可以設置也可以不設 * 置,如果不設置,則系統采用默認值。本例中將其屏蔽。 * 3: 在主函數中調用以上兩個函數,然后用庫函數USART_SendData()

      * 發送數據,用USART_GetFlagStatus(USART1, USART_FLAG_TXE) * 查詢中斷即可。

      程序如下:

      #include void?delay(u32?x)?//延時函數,u32是庫函數中定義好的宏,意為無符號32位整數?{ while(x--);} /**********************************************************************?*?Name?:?UART1_GPIO_Configuration?*?Deion?:?Configures?the?uart1?GPIO?ports.?*?Input?:?None?*?Output?:?None?*?Return?:?None void?UART1_GPIO_Configuration(void)?//注意:不是庫函數,而是自己定義的GPIO初始化函數, { GPIO_InitTypeDef?GPIO_InitStructure; //定義GPIO管腳初始化結構體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,?ENABLE); //本函數(使能時鐘)參數中,RCC_APB2Periph_USART1是必不可少的,有人會問,對于串口用到的PA9和 //PA10不用使能時鐘嗎?其實由于USART1默認的就是PA9和PA10,所以這一個就行了,當然你要是加上?//這個|RCC_APB2Periph_GPIOA也是不報錯的,只是重復了。 GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_9; //選中串口默認輸出管腳 GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;//定義輸出最大速率 GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;?//定義管腳9的模式 GPIO_Init(GPIOA,?&GPIO_InitStructure);?//調用函數,把結構體參數輸入進行初始化 //?Configure?USART1_Rx?as?input?floating GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_10;?//同上 GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IN_FLOATING;//設置上浮模式 GPIO_Init(GPIOA,?&GPIO_InitStructure); //同上 *?Name?:?UART1_Configuration?*?Deion?:?Configures?the?uart1?*?Input?:?None?*?Output?:?None?*?Return?:?None *******************************************************************************/?void?USART_Configuration(void)?{ USART_InitTypeDef?USART_InitStructure;?//定義串口初始化結構體 /*USART_ClockInitTypeDef?USART_ClockInitStructure;//定義串口模式初始化結構體 USART_ClockInitStructure.USART_Clock?=?USART_Clock_Enable;//?USART_ClockInitStructure.USART_CPOL?=?USART_CPOL_Low;?USART_ClockInitStructure.USART_CPHA?=?USART_CPHA_2Edge;?USART_ClockInitStructure.USART_LastBit?=?USART_LastBit_Disable;?USART_ClockInit(USART1,&USART_ClockInitStructure);?*/ USART_InitStructure.USART_BaudRate?=?9600;?//設置串口通信時的波特率9600 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;?//設置發送使能,接收使能?USART_Init(USART1,?&USART_InitStructure); //將以上賦完值的結構體帶入庫函數USART_Init進行初始化 USART_Cmd(USART1,?ENABLE);//開啟USART1,注意與上面RCC_APB2PeriphClockCmd()設置的區別 } int?main(void) UART1_GPIO_Configuration();?//調用GPIO初始化函數?USART_Configuration();?//調用USART配置函數?while(1) //大循環 { USART_SendData(USART1,?'A');?//發送一位數據 while(USART_GetFlagStatus(USART1,?USART_FLAG_TXE)?==?RESET);?//判斷是否發送完畢?delay(0XFFFFF);?//延時

      嵌入式 單片機

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:EXCEL表格如何刪除零值(excel表格怎么去除零值)
      下一篇:excel表格格式怎么統一(excel怎么讓表格格式統一)
      相關文章
      亚洲精品无码高潮喷水A片软| 亚洲Av综合色区无码专区桃色| 亚洲一二成人精品区| 亚洲一区二区三区无码影院| 丰满亚洲大尺度无码无码专线| 国产精品亚洲综合久久| 亚洲精品亚洲人成在线播放| 亚洲一区二区三区高清视频| 亚洲剧场午夜在线观看| 亚洲免费黄色网址| 激情亚洲一区国产精品| 亚洲AV成人无码天堂| 国产精品久久亚洲不卡动漫| 久久亚洲国产最新网站| 亚洲熟妇AV一区二区三区浪潮| 亚洲а∨天堂久久精品9966| 国产AV旡码专区亚洲AV苍井空| 亚洲综合无码一区二区痴汉 | 黑人精品videos亚洲人| 亚洲国产另类久久久精品黑人| 亚洲精品国产精品乱码不99| 亚洲成AV人片在| 亚洲人成网站影音先锋播放| 亚洲精品美女久久久久| 亚洲伊人精品综合在合线| 四虎亚洲精品高清在线观看| 亚洲国产精品18久久久久久 | 亚洲视频在线一区二区三区| 亚洲成无码人在线观看| 亚洲av成人一区二区三区| 亚洲中文字幕久久无码| 男人的天堂av亚洲一区2区| 一本久久综合亚洲鲁鲁五月天 | 亚洲国产中文在线视频| 97久久国产亚洲精品超碰热| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲精品动漫人成3d在线| 亚洲精品无码久久久久| 亚洲韩国—中文字幕| 亚洲午夜精品一区二区公牛电影院 | 亚洲冬月枫中文字幕在线看 |