網(wǎng)站域名哪些后綴更好石家莊谷歌seo
目錄
背景
程序
STM32浮空輸入的概念
1.基本概念
2. STM32浮空輸入的特點(diǎn)
3. STM32浮空輸入的應(yīng)用場景
STM32推挽輸出詳解
1. 基本概念
2. 工作原理
3. 應(yīng)用場景
使能外設(shè)時(shí)鐘
TXE 和 TC的區(qū)別
USART_IT_TXE
USART_IT_TC
使能串口外設(shè)
中斷處理函數(shù)
背景
單片機(jī)有常用的三大通信(SPI、I2C、UART(USART))。本篇文章對(duì)STM32的UART初始化進(jìn)行簡要的說明。
程序
void USART1_Init(u32 bound){ //串口1初始化并啟動(dòng)//GPIO端口設(shè)置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA時(shí)鐘//USART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出GPIO_Init(GPIOA, &GPIO_InitStructure); //USART1_RX PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//搶占優(yōu)先級(jí)3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優(yōu)先級(jí)3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器 //USART 初始化設(shè)置USART_InitStructure.USART_BaudRate = bound;//一般設(shè)置為9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長為8位數(shù)據(jù)格式USART_InitStructure.USART_StopBits = USART_StopBits_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);//開啟ENABLE/關(guān)閉DISABLE中斷USART_Cmd(USART1, ENABLE); //使能串口
}
對(duì)于RX腳的端口模式要設(shè)置為浮空輸入。對(duì)于RX腳的端口模式要設(shè)置為推挽輸出
STM32浮空輸入的概念
1.基本概念
STM32浮空輸入(Floating Input)模式是指GPIO端口的電平狀態(tài)完全由外部信號(hào)決定,該引腳既不連接到內(nèi)部上拉電阻,也不連接到內(nèi)部下拉電阻,處于高阻態(tài)。這種模式下,引腳對(duì)外表現(xiàn)為高阻抗,可以檢測到微弱的信號(hào)變化。
2. STM32浮空輸入的特點(diǎn)
- ?高阻抗?:浮空輸入時(shí),引腳表現(xiàn)為高阻抗,對(duì)外部電路的影響較小。
- ?電平狀態(tài)不定?:由于電平狀態(tài)完全由外部信號(hào)決定,因此在外部無信號(hào)或信號(hào)微弱時(shí),引腳電平狀態(tài)可能不穩(wěn)定,容易受到外界電磁干擾。
- ?適用于特定場景?:浮空輸入通常用于需要高阻抗信號(hào)讀取的場景,如按鍵檢測、ADC(模數(shù)轉(zhuǎn)換器)輸入等。
3. STM32浮空輸入的應(yīng)用場景
- ?按鍵檢測?:在按鍵電路中,按鍵未按下時(shí),通過浮空輸入模式可以檢測到按鍵的懸空狀態(tài),從而判斷按鍵是否被按下。
- ?ADC輸入?:在ADC采樣輸入時(shí),使用浮空輸入模式可以減少上拉或下拉電阻對(duì)采樣結(jié)果的影響,提高采樣精度。
- ?微弱信號(hào)檢測?:由于浮空輸入具有高阻抗特性,可以檢測到微弱的信號(hào)變化,適用于需要高靈敏度信號(hào)檢測的場景。
STM32推挽輸出詳解
1. 基本概念
STM32推挽輸出(Push-Pull Output)是一種GPIO(通用輸入輸出)引腳輸出模式,能夠輸出高電平和低電平,并具有一定的驅(qū)動(dòng)能力。在這種模式下,引腳在輸出低電平時(shí)形成低阻抗,輸出高電平時(shí)形成高阻抗,可以驅(qū)動(dòng)外部電路。
2. 工作原理
推挽輸出模式的工作原理基于兩個(gè)互補(bǔ)的晶體管(通常是MOSFET或雙極型晶體管)來控制輸出電平。當(dāng)輸出信號(hào)為高電平時(shí),一個(gè)晶體管導(dǎo)通,將輸出端拉向高電平;當(dāng)輸出信號(hào)為低電平時(shí),另一個(gè)晶體管導(dǎo)通,將輸出端拉向低電平。這種互補(bǔ)控制方式確保了輸出端在高低電平之間快速切換,同時(shí)提供足夠的驅(qū)動(dòng)能力。
3. 應(yīng)用場景
STM32推挽輸出模式廣泛應(yīng)用于需要驅(qū)動(dòng)外部負(fù)載的場景,如:
- 控制LED燈的亮滅。
- 驅(qū)動(dòng)繼電器、電機(jī)等負(fù)載。
- 與其他數(shù)字電路進(jìn)行邏輯電平連接。
使能外設(shè)時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
查看GPIOA(端口組A)是接在APB2總線上。
串口中斷配置
TXE 和 TC的區(qū)別
USART_IT_TXE
?USART_IT_TXE?(發(fā)送數(shù)據(jù)寄存器空標(biāo)志位)表示發(fā)送數(shù)據(jù)寄存器(USART_DR)為空,即可以往USART_DR中寫入下一個(gè)要發(fā)送的數(shù)據(jù)。當(dāng)USART_DR中的數(shù)據(jù)被傳送到移位寄存器后,TXE標(biāo)志被設(shè)置,此時(shí)程序可以把下一個(gè)要發(fā)送的字節(jié)寫入U(xiǎn)SART_DR。需要注意的是,在初始化USART時(shí),即使沒有發(fā)送任何數(shù)據(jù),TXE標(biāo)志也會(huì)被設(shè)置,因?yàn)榇藭r(shí)發(fā)送數(shù)據(jù)寄存器是空的?12。
USART_IT_TC
?USART_IT_TC?(傳輸完成標(biāo)志位)表示移位寄存器中的所有數(shù)據(jù)都已發(fā)送完畢。當(dāng)移位寄存器中的所有數(shù)據(jù)都移出后,硬件會(huì)設(shè)置TC標(biāo)志。TC標(biāo)志是在發(fā)送結(jié)束時(shí)觸發(fā),通常用于發(fā)送結(jié)束后處理?。
使能串口外設(shè)
中斷處理函數(shù)
void USART1_IRQHandler(void){ //串口1中斷服務(wù)程序(固定的函數(shù)名不能修改) u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){ Res =USART_ReceiveData(USART1);//(USART1->DR); //讀取接收到的數(shù)據(jù)printf("%c",Res); //把收到的數(shù)據(jù)以 a符號(hào)變量 發(fā)送回電腦 }
}