stm32f10x串口實(shí)驗(yàn)之中斷模式-創(chuàng)新互聯(lián)

1、在使用一個(gè)內(nèi)置外設(shè)的時(shí)候,我們首先要使能相應(yīng)的 GPIO 時(shí)鐘,然后使能復(fù)用功能時(shí)

創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為齊齊哈爾企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),齊齊哈爾網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

鐘和內(nèi)置外設(shè)時(shí)鐘。注意設(shè)置時(shí),要使能三個(gè),一個(gè)gpio,一個(gè)usart,還有一個(gè)復(fù)用功能;

2、gpio的端口模式設(shè)定:

3、中斷相應(yīng)函數(shù)的名字是不能隨便定義的,一般我們都遵循 MDK

定義的函數(shù)名。這些函數(shù)名字在啟動(dòng)文件 startup_stm32f10x_hd.s 文件中可以找到

4、串口設(shè)置的一般步驟可以總結(jié)為如下幾個(gè)步驟:

1) 串口時(shí)鐘使能, GPIO 時(shí)鐘使能

2) 串口復(fù)位  一般在系統(tǒng)剛開始配置外設(shè)的時(shí)候,都會(huì)先執(zhí)行復(fù)位該外設(shè)的操作(DeInit(函數(shù)))

3) GPIO 端口模式設(shè)置

4) 串口參數(shù)初始化

5) 開啟中斷并且初始化 NVIC(如果需要開啟中斷才需要這個(gè)步驟)

6) 使能串口

7) 編寫中斷處理函數(shù)

5、STM32 的發(fā)送與接收是通過數(shù)據(jù)寄存器 USART_DR 來實(shí)現(xiàn)的,這是

一個(gè)雙寄存器,包含了 TDR 和 RDR。當(dāng)向該寄存器寫數(shù)據(jù)的時(shí)候,串口就會(huì)自動(dòng)發(fā)送,當(dāng)收

到數(shù)據(jù)的時(shí)候,也是存在該寄存器內(nèi)。

6、串口的狀態(tài)可以通過狀態(tài)寄存器 USART_SR 讀取。通過讀(即為receive函數(shù)) USART_DR 可以將

該位清零,也可以向該位寫 0,直接清除。

7、因?yàn)槲覀兪褂玫搅舜诘闹袛嘟邮?,必須?usart.h 里面設(shè)置

EN_USART1_RX 為 1(默認(rèn)設(shè)置就是 1 的) 。該函數(shù)才會(huì)配置中斷使能,以及開啟串口 1 的

NVIC 中斷。這里我們把串口 1 中斷放在組 2,優(yōu)先級設(shè)置為組 2 里面的最低。NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 設(shè) 置 NVIC 中 斷 分 組 2

8、 IO 口復(fù)用的,信號(hào)在邏輯分析窗口是不能顯示出來的(看不到波形),

自己實(shí)現(xiàn)的代碼如下:

 m_usart.c文件:

#include "m_usart.h"
#include "sys.h"

void GPIO_config(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO ,ENABLE);
	
	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_9;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_10;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOA,&GPIO_InitStruct);

}

void NVIC_config()
{
	NVIC_InitTypeDef NVIC_InitStruct;
	
	
	NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStruct);
}


void USART_config()
{
	USART_InitTypeDef USART_InitStruct;
	USART_DeInit(USART1);
	
	USART_InitStruct.USART_BaudRate = 115200;
  USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  USART_InitStruct.USART_StopBits = USART_StopBits_1;
  USART_InitStruct.USART_Parity = USART_Parity_No ;
  USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
	USART_Init(USART1,&USART_InitStruct);
	
	USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);  //Dê1ü£
	USART_Cmd(USART1,ENABLE);  //′úê1ü£
	
}



void init_usart1(void)
{
	GPIO_config();
	NVIC_config();
	USART_config();

}

主函數(shù)中的中斷服務(wù)程序:

void USART1_IRQHandler(void)

{

if((USART_GetITStatus(USART1, USART_IT_RXNE) != RESET))  //判斷中斷狀態(tài);

{

if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET)   //注意,這里是判斷串口狀態(tài);

{

  r_data = USART_ReceiveData(USART1);

  USART_SendData(USART1,r_data);

}

   }

USART_ClearITPendingBit(USART1,USART_IT_RXNE);   //清除中斷標(biāo)志位;

}

好了,今天收獲不是很多,好好的,第二天加油!

弟子規(guī)第二天:

 父母呼 應(yīng)勿緩 父母命 行勿懶

父母教 須敬聽 父母責(zé) 須順承

冬則溫 夏則凊 晨則省 昏則定

出必告 反必面 居有?!I(yè)無變

百事孝為先!

必須孝敬父母,尊重長輩,與君共勉!

今天我也進(jìn)行了愛心捐款,我做了一件好事,自己的正能量滿滿,加油,我會(huì)越來越好的!

加油!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享標(biāo)題:stm32f10x串口實(shí)驗(yàn)之中斷模式-創(chuàng)新互聯(lián)
分享地址:http://bm7419.com/article10/cechdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站網(wǎng)站排名、ChatGPT、建站公司、小程序開發(fā)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化