日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32之USART学习

發(fā)布時間:2025/7/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32之USART学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先,我是看著這位博主的文章受到的啟發(fā),進(jìn)而加深了自己對USART的理解。下面是自己改裝并實(shí)驗(yàn)過的程序。

原文:http://www.cnblogs.com/greatwgb/archive/2011/07/28/2119350.html

?

1.?????串口的基本概念

在STM32的參考手冊中,串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯(lián)網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。還可以使用DMA方式,實(shí)現(xiàn)高速數(shù)據(jù)通信。

USART通過3個引腳與其他設(shè)備連接在一起,任何USART雙向通信至少需要2個引腳:接受數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX)。

RX:?接受數(shù)據(jù)串行輸入。通過過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。

TX:?發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的I/O端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時,TX引腳處處于高電平。在單線和智能卡模式里,此I/O口被同時用于數(shù)據(jù)的發(fā)送和接收。

?

2.?????串口的如何工作的

一般有兩種方式:查詢和中斷。

(1)查詢:串口程序不斷地循環(huán)查詢,看看當(dāng)前有沒有數(shù)據(jù)要它傳送。如果有,就幫助傳送(可以從PC到STM32板子,也可以從STM32板子到PC)。

(2)中斷:平時串口只要打開中斷即可。如果發(fā)現(xiàn)有一個中斷來,則意味著要它幫助傳輸數(shù)據(jù)——它就馬上進(jìn)行數(shù)據(jù)的傳送。同樣,可以從?PC到STM3板子,也可以從STM32板子到PC。

?

程序源碼:

/*************************************USART(通用同步異步收發(fā)器)實(shí)驗(yàn) 使用USART1實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收 日期:2016.2.25******************************************/#include "stm32f10x.h"FlagStatus RX_status;//void RCC_cfg(); void GPIO_cfg(void); void USART_cfg(void); void NVIC_cfg(void);int main() {int i;unsigned char TxBuf1[] = "HELLO,QIANSHUAI,Welcome to my STM32! Please press any key!";GPIO_cfg();NVIC_cfg();USART_cfg();USART_ClearFlag(USART1,USART_FLAG_TC); //清除標(biāo)志位,否則第1位數(shù)據(jù)會丟失for( i=0;TxBuf1[i]!='\0';i++) //發(fā)送數(shù)據(jù),當(dāng)有數(shù)據(jù)在發(fā)送的時候,Pg14會亮 {USART_SendData(USART1,TxBuf1[i]);GPIO_SetBits(GPIOG,GPIO_Pin_14);while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET); //等待數(shù)據(jù)發(fā)送完畢 GPIO_ResetBits(GPIOG,GPIO_Pin_14);}while(1);}//IO口配置 void GPIO_cfg() {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);//實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)不使能RCC_APB2Periph_USART1時,運(yùn)行也不會報(bào)錯,但是串口助手顯示程序一直卡在發(fā)送狀態(tài),led一直亮著。// GPIO_StructInit(&GPIO_InitStructure); //我的板子的例程中并沒有聲明這一句GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA9作為US1的TX端,打開復(fù)用,負(fù)責(zé)發(fā)送數(shù)據(jù)GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//PA10作為US1的RX端,負(fù)責(zé)接收數(shù)據(jù)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入GPIO_Init(GPIOA, &GPIO_InitStructure);//LED2顯示串口正在發(fā)送/接收數(shù)據(jù)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOG, &GPIO_InitStructure); }//串口初始化,在初始化USART前應(yīng)該先把GPIO設(shè)置好,USART是GPIO的復(fù)用功能. void USART_cfg() {USART_InitTypeDef USART_InitStructure;USART_StructInit(&USART_InitStructure); //將結(jié)構(gòu)體設(shè)置為缺省狀態(tài) USART_InitStructure.USART_BaudRate = 115200; //波特率設(shè)置為115200 USART_InitStructure.USART_WordLength = USART_WordLength_8b; //一幀數(shù)據(jù)的寬度設(shè)置為8bits USART_InitStructure.USART_StopBits = USART_StopBits_1; //在幀結(jié)尾傳輸1個停止位 USART_InitStructure.USART_Parity = USART_Parity_No; //奇偶失能模式,無奇偶校驗(yàn) USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //發(fā)送/接收使能 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //硬件流控制失能 USART_Init(USART1, &USART_InitStructure); //根據(jù)參數(shù)初始化串口1寄存器 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //打開串口1的中斷響應(yīng)函數(shù) USART_Cmd(USART1, ENABLE); //打開串口1 }//配置中斷 void NVIC_cfg() {NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //選擇中斷分組2 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //選擇串口1中斷NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //搶占式中斷優(yōu)先級設(shè)置為0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //響應(yīng)式中斷優(yōu)先級設(shè)置為0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中斷NVIC_Init(&NVIC_InitStructure); }//然后在stm32f10x_it.c文件中找到相應(yīng)的中斷處理函數(shù),并填入一下內(nèi)容。 //注意在stm32f10x_it.c中,要聲明一下外部變量RX_status//extern FlagStatus RX_status;void USART1_IRQHandler(void) //中斷入口函數(shù) {GPIO_SetBits(GPIOG, GPIO_Pin_14);//確認(rèn)是否接收到數(shù)據(jù)RX_status = USART_GetFlagStatus(USART1, USART_FLAG_RXNE);//接收到數(shù)據(jù)if(RX_status == SET){//將數(shù)據(jù)回送至超級終端 USART_SendData(USART1, USART_ReceiveData(USART1));//等待數(shù)據(jù)發(fā)送完畢while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);GPIO_ResetBits(GPIOG, GPIO_Pin_14);}}

?

?

這個是自己改過的程序。其實(shí)也是很簡答的。

轉(zhuǎn)載于:https://www.cnblogs.com/qsyll0916/p/6442832.html

總結(jié)

以上是生活随笔為你收集整理的stm32之USART学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产第一页 | 亚洲成人日韩在线 | 婷婷影视| 国产伦精品视频一区二区三区 | 美女扒开让男人桶爽 | av电影一区二区三区 | 国产超碰人人模人人爽人人添 | 色秀av| 欧美天天射 | 亚洲一区二区在线免费观看 | 黄色小视频在线观看免费 | 国产av不卡一区二区 | 久热久色| 久久久久久久久久久网站 | 国产精品一品二品 | 叼嘿视频在线免费观看 | www.欧美国产 | 中文字字幕在线中文乱码电影 | 性一交一乱一精一晶 | 91精品国产一区二区三区蜜臀 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 国产精品中文久久久久久 | 欧日韩av | 国产欧洲亚洲 | 不卡在线一区二区 | 黄色大片网站 | 欧美丰满老熟妇xxxxx性 | 日本在线观看a | 少妇人妻综合久久中文字幕 | 免费吃奶摸下激烈视频 | 亚洲中文无码久久 | 丰满大肥婆肥奶大屁股 | 三级毛毛片 | 亚洲精品乱码久久久久 | 亚洲欧美日韩国产 | 国产精品欧美亚洲 | 日韩一区二区三区在线观看视频 | av网站在线免费 | 69黄色片| 恶虐女帝安卓汉化版最新版本 | 亚洲精品久久久久久久蜜桃 | 网站黄在线观看 | av手机免费看 | 无码人妻精品一区二区三区66 | 喷水在线观看 | 久久人人爽天天玩人人妻精品 | 亚洲乱码视频在线观看 | 日韩国产片 | 天天摸日日摸狠狠添 | 最新视频 - 88av | 亚洲国产成人精品女人久久久 | 青青草手机视频 | 久久两性视频 | 国产精品视频在线观看免费 | 口述3p做爰全过程 | 国产经典三级在线 | 日韩一区二区三区av | 天天拍夜夜拍 | 男人天堂2024 | 天天躁夜夜躁狠狠躁 | 欧美一级片网址 | a午夜| 国产精品污网站 | 亚洲精品一区二区三区蜜桃久 | 在线免费观看日韩视频 | 四虎在线观看 | 亚洲精品乱码久久久久久9色 | 在线免费一级片 | 牛牛影视免费观看 | 日韩视频在线观看二区 | 不卡一区二区在线 | 亚洲综合av一区 | 99久久亚洲精品日本无码 | 欧美日本 | 香港三级日本三级韩国三级 | 毛片官网 | 欧美草b | 日本乱偷中文字幕 | 亚洲成人无码久久 | 美国特色黄a大片 | jzzijzzij日本成熟少妇 | 国产视频一区在线观看 | 精品久久久久久一区二区里番 | 丰满少妇大力进入 | 亚洲激情影院 | 五月天综合婷婷 | 六月激情婷婷 | 亚洲天堂av网 | 高清一区二区在线 | 亚洲男男网站 | 波多野结衣中文字幕在线 | 久久机热| xx视频在线 | 久久精品片 | 国产suv精品一区二区33 | 在线观看一二区 | 国产欧美不卡 | 欧美一级片免费在线观看 | 成人免费福利视频 |