日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]概念在STM32的參考手冊(cè)中,串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。(好吧我也不是很懂,暫且貼上官方定義,各位看官自

概念
在STM32的參考手冊(cè)中,串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。(好吧我也不是很懂,暫且貼上官方定義,各位看官自己悟吧)
配置步驟

打開時(shí)鐘(RCC配置)
由于UART的TX和RX和AFIO都掛在APB2橋上,因此采用固件庫函數(shù)RCC_APB2PeriphClockCmd()進(jìn)行初始化。UARTx需要分情況討論,如果是UART1,則掛在APB2橋上,因此采用RCC_APB2PeriphClockCmd()進(jìn)行初始化,其余的UART2~5均掛在APB1上。

GPIO配置
GPIO的屬性包含在結(jié)構(gòu)體GPIO_InitTypeDef,其中對(duì)于TX引腳,GPIO_Mode字段設(shè)置為GPIO_Mode_AF_PP(復(fù)用推挽輸出),GPIO_Speed切換速率設(shè)置為GPIO_Speed_50MHz;對(duì)于RX引腳,GPIO_Mode字段設(shè)置為GPIO_Mode_IN_FLOATING(浮空輸入),不需要設(shè)置切換速率。最后通過GPIO_Init()使能IO口。

NVIC配置
STM32在只有一個(gè)中斷的情況下,仍然需要配置優(yōu)先級(jí),其作用是使能某條中斷的觸發(fā)通道。STM32的中斷有至多兩個(gè)層次,分別是搶占優(yōu)先級(jí)(主優(yōu)先級(jí))和子優(yōu)先級(jí)(從優(yōu)先級(jí)),而整個(gè)優(yōu)先級(jí)設(shè)置參數(shù)的長度為4位,因此需要首先劃分搶占優(yōu)先級(jí)位數(shù)和子優(yōu)先級(jí)位數(shù),通過NVIC_PriorityGroupConfig()實(shí)現(xiàn);

特定設(shè)備的中斷優(yōu)先級(jí)NVIC的屬性包含在結(jié)構(gòu)體NVIC_InitTypeDef中,其中字段NVIC_IRQChannel包含了設(shè)備的中斷向量,保存在啟動(dòng)代碼中;字段NVIC_IRQChannelPreemptionPriority為主優(yōu)先級(jí)NVIC_IRQChannelSubPriority為從優(yōu)先級(jí),取值的范圍應(yīng)根據(jù)位數(shù)劃分的情況而定;最后NVIC_IRQChannelCmd字段是是否使能,一般置為ENABLE。最后通過NVIC_Init()來使能這一中斷向量。

USART配置
通過結(jié)構(gòu)體USART_InitTypeDef來確定。UART模式下的字段如下:

USART_BaudRate:波特率(每秒能傳輸?shù)臄?shù)據(jù)位),缺省值為9600。

USART_WordLength:字長

USART_StopBits:停止位

USART_Parity:校驗(yàn)方式(奇偶校驗(yàn))

USART_HardwareFlowControl:硬件流控制

USART_Mode:單/雙工,即收發(fā)狀態(tài)。

最后通過USART_Init()來設(shè)置。

代碼匯總

voiduart_init(u32bound){GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//使能USART1和GPIOA時(shí)鐘USART_DeInit(USART1);//復(fù)位串口1(各參數(shù)置為缺省值)//USART1_TX(發(fā)送數(shù)據(jù))PA.9引腳GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA.9//USART1_RX(接收數(shù)據(jù))PA.10引腳GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA.10//NVIC中斷向量配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//搶占優(yōu)先級(jí)置為3NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級(jí)置為3,優(yōu)先級(jí)依據(jù)不同的中斷重要性不同來確定。NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能NVIC_Init(&NVIC_InitStructure);//根據(jù)上面設(shè)置的參數(shù)初始化NVIC寄存器//USART初始化設(shè)置USART_InitStructure.USART_BaudRate=bound;//波特率為9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)USART_InitStructure.USART_StopBits=USART_StopBits_1;//1個(gè)停止位USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗(yàn)位USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//收發(fā)模式USART_Init(USART1,&USART_InitStructure);//串口初始化USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//中斷開啟USART_Cmd(USART1,ENABLE);//串口使能}123456789101112131415161718192021222324252627282930313233343536373839


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉