?? bsp_usart.c
字號:
/*
*********************************************************************************************************
*
* 模塊名稱 : 串口驅動模塊
* 文件名稱 : bsp_usart.c
* 版 本 : V2.0
* 說 明 : 實現printf和scanf函數重定向到串口1,即支持printf信息到USART1
* 實現重定向,只需要添加2個函數:
* int fputc(int ch, FILE *f);
* int fgetc(FILE *f);
* 對于KEIL MDK編譯器,編譯選項中需要在MicorLib前面打鉤,否則不會有數據打印到USART1。
* 修改記錄 :
* 版本號 日期 作者 說明
* v0.1 2009-12-27 armfly 創建該文件,ST固件庫版本為V3.1.2
* v1.0 2011-01-11 armfly ST固件庫升級到V3.4.0版本。
* v2.0 2011-10-16 armfly ST固件庫升級到V3.5.0版本。優化工程結構。
*
* Copyright (C), 2010-2011, 安富萊電子 www.armfly.com
*
*********************************************************************************************************
*/
#include "stm32f10x.h"
/*
*********************************************************************************************************
* 函 數 名: bsp_InitUart
* 功能說明: 初始化CPU的USART1串口硬件設備。未啟用中斷。
* 形 參:無
* 返 回 值: 無
*********************************************************************************************************
*/
void bsp_InitUart(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/* 第1步:打開GPIO和USART部件的時鐘 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
/* 第2步:將USART Tx的GPIO配置為推挽復用模式 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 第3步:將USART Rx的GPIO配置為浮空輸入模式
由于CPU復位后,GPIO缺省都是浮空輸入模式,因此下面這個步驟不是必須的
但是,我還是建議加上便于閱讀,并且防止其它地方修改了這個口線的設置參數
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 第3步已經做了,因此這步可以不做
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 第4步:配置USART參數
- 波特率 = 115200 baud
- 數據長度 = 8 Bits
- 1個停止位
- 無校驗
- 禁止硬件流控(即禁止RTS和CTS)
- 使能接收和發送
*/
USART_InitStructure.USART_BaudRate = 115200;
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;
USART_Init(USART1, &USART_InitStructure);
/* 第5步:使能 USART, 配置完畢 */
USART_Cmd(USART1, ENABLE);
/*
CPU的小缺陷:串口配置好,如果直接Send,則第1個字節發送不出去
如下語句解決第1個字節無法正確發送出去的問題:
清發送完成標志,Transmission Complete flag
*/
USART_ClearFlag(USART1, USART_FLAG_TC);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -