標題: STM32學習之USART(串口通信) [打印本頁]
作者: xiaos 時間: 2015-4-10 17:36
標題: STM32學習之USART(串口通信)
void USART1_Configuration()//設置USART1
{
GPIO_InitTypeDef GPIO_InitStructure;//設置GPIO口用的結構體
USART_InitTypeDef USART_Init_Structure;//設置USART的結構體
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//這個管腳接TXD
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//選擇復用推挽式輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//這個管腳接RXD
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//選擇浮空輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
GPIO_Init(GPIOA,&GPIO_InitStructure);
USART_Init_Structure.USART_BaudRate=9600;//設置波特率(每秒鐘傳輸的位數)
USART_Init_Structure.USART_StopBits=USART_StopBits_1;//選擇停止位 為1位
USART_Init_Structure.USART_Party=UART_Party_No;//不用奇偶校驗
USART_Iinit_Structure_USART_HardwareFlowcontrol=USART_HardwareFlowcontrol_None;//不使用硬件流控制
USART_InitStructure_USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//選擇USART的接收和發送使能
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);//使能USART1;
}
經過這樣的設置USART1就可以用了 使用USART_SendData(USART1,待發送數據);
也可以使用重映射過的 printfh 函數來發送數據.
重映射過程如下
Int fputc(intch,FILE *f)//需要添加 stdio.h 頭文件
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//這段話表示如果發送數據沒有結束 就聽在這里等待
}
經過以上的配置可以發送和接受數據 但是不能產生USART中斷
需要USART中斷可以 這樣設置
voidNVIC_Configuration()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.IROChannel=USART1_IRQn;
NVIC_InitStructure.IRQChannelPreemPtionPriority=0;
NVIC_InitStructure.IRQChannelSubPriority=0;
NVIC_InitStructure.IPQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |