要使用NVIC中斷控制器的話滞伟,那么就得加入misc.c文件贩疙,在這個文件里面包含了NVIC的主要功能代碼翘狱。
1.關(guān)于USART_InitTypeDef結(jié)構(gòu)體
直接看代碼:
typedef struct {
uint32_t USART_BaudRate;//設(shè)置波特率
uint32_t USART_Mode;//設(shè)置模式是讀還是寫或者兩者都是
uint32_t USART_WordLength;//設(shè)置傳輸?shù)臄?shù)據(jù)位長度
uint32_t USART_StopBits;//設(shè)置停止位
uint32_t USART_HardwareFlowControl;//設(shè)置硬件數(shù)據(jù)流控制
uint32_t USART_Parity;//設(shè)置是否需要奇偶校驗
} USART_InitTypeDef;
下面看看每個結(jié)構(gòu)體成員可以取的值:
USART_Mode
- USART_Mode_Rx: 只讀
- USART_Mode_Tx: 只寫
- USART_Mode_Rx | USART_Mode_Tx: 讀寫
USART_WordLength
- USART_WordLength_8b:
- USART_WordLength_9b: 如果開啟了奇偶校驗的話那么最好數(shù)據(jù)位是9位侣姆,因為校驗位會插入在數(shù)據(jù)位的最高位上
USART_StopBits
- USART_StopBits_1: 一位停止位
- USART_StopBits_0_5: 0.5個停止位
- USART_StopBits_2: 2個停止位
- USART_StopBits_1_5: 1.5個停止位
USART_Parity
- USART_Parity_No: 不設(shè)置奇偶校驗位
- USART_Parity_Even: 設(shè)置偶檢驗位
- USART_Parity_Odd: 設(shè)置奇校驗位
需要注意的地方:經(jīng)過計算出來得到的校驗位被放在數(shù)據(jù)位的最高位夜郁,所以為了避免亂碼遇革,最好在開啟了奇偶校驗的話那么就將USART_WordLength設(shè)置為9位
USART_HardwareFlowControl
- USART_HardwareFlowControl_None: 不需要硬件流控制
- USART_HardwareFlowControl_RTS: request to send
- USART_HardwareFlowControl_CTS: clear to send
- USART_HardwareFlowControl_RTS_CTS:
2.相關(guān)庫函數(shù)的大致使用流程
這里以偽代碼簡易介紹一下:
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.xxx = xxx;//填充好這個USART_InitTypeDef對象
USART_Init(USARTx, &USART_InitStructure);//應(yīng)用配置
USART_Cmd(USARTx, ENABLE);//使能具體的USART
當(dāng)然卿闹,前面還得配置一下端口。需要注意的是如果端口的默認(rèn)功能就是用作USART的話萝快,那么不需要開啟AFIO時鐘锻霎,我們只需要開啟端口時鐘以及usart時鐘。還有就是對于STM32F103ZE來說杠巡,我們的usart1屬于APB2外設(shè)量窘。