国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> STM32 UART的使用過程

STM32 UART的使用過程

關(guān)鍵字:UART STM 過程 作者:admin 來源:不詳 發(fā)布時(shí)間:2018-05-19  瀏覽:14

1、使用UART前必須啟動相應(yīng)的外設(shè)時(shí)鐘,其主要用到固件庫的RCC_APBnPeriphClockCmd函數(shù)。

使能UART1:使用RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE)

使能UART2:使用RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE)

2、使用中斷進(jìn)行UART操作的需要配置NVIC,設(shè)置中斷優(yōu)先級。如:

/* Configure the NVIC Preemption Priority Bits */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USART1 Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

3、配置相應(yīng)的GPIO口。

如果系統(tǒng)的UART需要進(jìn)行重映射,需要使用GPIO_PinRemapConfig函數(shù)進(jìn)行重映射,如:GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//注意:Rx為浮空,Tx為第二功能上拉。

將Rx配置為:浮空輸入模式,Tx配置為帶上拉的第二功模式。并用GPIO_Init() 函數(shù)初始化。如:

/* Configure USART2 Rx PA3 input floating */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure USART1 Tx (PA.09) as alternate push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

4、配置UART

當(dāng)在conf文件種配置正確的外晶振后,在USART_InitTypeDef定義的結(jié)構(gòu)體種直接寫入U(xiǎn)ART的波特率、通訊長頓、模式、硬件通訊控制,收發(fā)模式。再用USART_Init()進(jìn)行初始化。如:

USART_InitStructure.USART_BaudRate = 9600;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_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;

/* Configure USART1 */

USART_Init(USART1, &USART_InitStructure);

而后使能收發(fā)中斷。如:

/* Enable USART1 Receive and Transmit interrupts */

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

// USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

注意:一般不將TXE中斷使能。因?yàn)橐坏⿲⒋酥袛嗍鼓,如果UART發(fā)送緩沖區(qū)空,則會立即進(jìn)入U(xiǎn)ART中斷中,因此可在程序中需要發(fā)送數(shù)據(jù)處,使能TXE中斷。在UART中斷種用USART_SendData()來發(fā)送數(shù)據(jù)。

完成中斷使能后,還需要使能UART口:

如:

/* Enable the USART1 */

USART_Cmd(USART1, ENABLE);

/* Enable the USART2 */

USART_Cmd(USART2, ENABLE);

中斷程序(stm32f10x_it.c)可以如下完成發(fā)送:注意所有的的串口中斷需要在中斷服務(wù)程序中判斷中斷源以分別處理。

void USART1_IRQHandler(void)

{

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

/* Read one byte from the receive data register */

RxBuffer1[RxCounter1++] = USART_ReceiveData(USART1);

if(RxCounter1 == NbrOfDataToRead1)

{

USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);//發(fā)送完成后,將RXNE禁止。

}

}

if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)

{

USART_SendData(USART1, TxBuffer1[TxCounter1++]);

if(TxCounter1 == NbrOfDataToTransfer1)

{

USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

}

}

}

擴(kuò)展閱讀:STM32的IO口的8種配置

編輯:admin  最后修改時(shí)間:2018-05-19

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

免费观看一级欧美大片| 欧美尤物在线观看西比尔| 亚洲最新av在线观看| 欧美午夜性刺激在线观看| 日韩国产精品激情一区| 伊人国产精选免费观看在线视频| 手机在线不卡国产视频| 国产日韩综合一区在线观看| 国产又粗又硬又大又爽的视频| 丰满少妇被猛烈撞击在线视频| 欧美黑人巨大一区二区三区| 亚洲欧洲精品一区二区三区| 日本熟女中文字幕一区| 欧美精品在线观看国产| 国产成人精品午夜福利av免费| 国产欧美日韩在线精品一二区| 日本中文字幕在线精品| 日韩免费午夜福利视频| 欧美日韩最近中国黄片| 91免费一区二区三区| 日韩一级免费中文字幕视频| 亚洲欧美日韩国产成人| 日本精品中文字幕在线视频| 麻豆一区二区三区在线免费| 国产高清三级视频在线观看| 久久综合日韩精品免费观看| 黄色三级日本在线观看| 国产熟女一区二区精品视频| 欧美精品女同一区二区| 国产又大又黄又粗的黄色| 东京热一二三区在线免| 欧美成人免费一级特黄| 国产欧美日产久久婷婷| 国产亚洲精品岁国产微拍精品| 欧美精品在线播放一区二区| 欧美丰满人妻少妇精品| 91亚洲精品国产一区| 国产精品午夜福利免费阅读| 自拍偷拍一区二区三区| 在线免费国产一区二区三区| 国产又粗又猛又爽又黄的文字|