<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32之串口通信

STM32之串口通信

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏
實(shí)驗目的:

實(shí)現利用串口1 不停的打印一個(gè)信息到電腦上,同時(shí)接收從串口發(fā)過(guò)來(lái)的數據,把發(fā)送過(guò)來(lái)的數據直接送回給電腦。

本文引用地址:http://dyxdggzs.com/article/201611/320972.htm

實(shí)驗平臺:

基于STM32F103C8T6的彩屏開(kāi)發(fā)板

硬件接口:

注意:因為我的開(kāi)發(fā)板上的串口和LED共用了PA9和PA10,所以在使用USART1時(shí)務(wù)必屏蔽LED,不然兩者會(huì )互相影響而導致實(shí)現現象無(wú)法呈現。

相關(guān)寄存器:

1,串口時(shí)鐘使能。串口作為STM32 的一個(gè)外設,其時(shí)鐘由外設時(shí)鐘使能寄存器控制,這

里我們使用的串口1 是在A(yíng)PB2ENR 寄存器的第14 位。

2,串口復位。串口1 的復位是通過(guò)配置APB2RSTR 寄存器的第14 位來(lái)實(shí)現的。。通過(guò)向該位寫(xiě)1來(lái)復位串口1,寫(xiě)0 結束復位。

3,串口波特率設置。每個(gè)串口都有一個(gè)自己獨立的波特率寄存器USART_BRR

波特率的計算,STM32 的串口波特率計算公式如下:


上式中, 是給串口的時(shí)鐘(PCLK1 用于USART2、3、4、5,PCLK2 用于USART1);USARTDIV 是一個(gè)無(wú)符號定點(diǎn)數。我們只要得到USARTDIV 的值,就可以得到串口波特率寄存器USART1->BRR 的值。

4,串口控制。STM32 的每個(gè)串口都有3 個(gè)控制寄存器USART_CR1~3,串口的很多配置

都是通過(guò)這3 個(gè)寄存器來(lái)設置的

5,數據發(fā)送與接收。STM32 的發(fā)送與接收是通過(guò)數據寄存器USART_DR 來(lái)實(shí)現的,這是

一個(gè)雙寄存器,包含了TDR 和RDR。

6,串口狀態(tài)。串口的狀態(tài)可以通過(guò)狀態(tài)寄存器USART_SR 讀取。

(注:詳細的介紹使用請參考ST公司的數據手冊)

程序設計:

(注:本人的usart.c usart.h delay.c delay.h sys.c sys.h是引用網(wǎng)上一位網(wǎng)友整理的)

usart.h

#ifndef __USART_H

#define __USART_H

#include

#include "stdio.h"

extern u8 USART_RX_BUF[64]; //接收緩沖,最大63個(gè)字節.末字節為換行符

extern u8 USART_RX_STA; //接收狀態(tài)標記

//如果想串口中斷接收,請不要注釋以下宏定義

#define EN_USART1_RX //使能串口1接收

void uart_init(u32 pclk2,u32 bound);

#endif

usart.c

#include "sys.h"

#include "usart.h"

//加入以下代碼,支持printf函數,而不需要選擇use MicroLIB

#if 1

#pragma import(__use_no_semihosting)

//標準庫需要的支持函數

struct __FILE

{

int handle;

};

FILE __stdout;

//定義_sys_exit()以避免使用半主機模式

_sys_exit(int x)

{

x = x;

}

//重定義fputc函數

int fputc(int ch, FILE *f)

{

while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢

USART1->DR = (u8) ch;

return ch;

}

#endif

//end

//////////////////////////////////////////////////////////////////

#ifdef EN_USART1_RX //如果使能了接收

//串口1中斷服務(wù)程序

//注意,讀取USARTx->SR能避免莫名其妙的錯誤

u8 USART_RX_BUF[64]; //接收緩沖,最大64個(gè)字節.

//接收狀態(tài)

//bit7,接收完成標志

//bit6,接收到0x0d

//bit5~0,接收到的有效字節數目

u8 USART_RX_STA=0; //接收狀態(tài)標記


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: STM32串口通

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>