找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3326|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32學(xué)習(xí)之USART(串口通信)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-10 17:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void USART1_Configuration()//設(shè)置USART1

{
       GPIO_InitTypeDef      GPIO_InitStructure;//設(shè)置GPIO口用的結(jié)構(gòu)體
       USART_InitTypeDef    USART_Init_Structure;//設(shè)置USART的結(jié)構(gòu)體
       GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//這個(gè)管腳接TXD
       GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//選擇復(fù)用推挽式輸出
       GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
       GPIO_Init(GPIOA,&GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//這個(gè)管腳接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;//設(shè)置波特率(每秒鐘傳輸?shù)奈粩?shù))
       USART_Init_Structure.USART_StopBits=USART_StopBits_1;//選擇停止位 1
       USART_Init_Structure.USART_Party=UART_Party_No;//不用奇偶校驗(yàn)
USART_Iinit_Structure_USART_HardwareFlowcontrol=USART_HardwareFlowcontrol_None;//不使用硬件流控制
       USART_InitStructure_USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//選擇USART的接收和發(fā)送使能
       USART_Init(USART1,&USART_InitStructure);
       USART_Cmd(USART1,ENABLE);//使能USART1;
}
經(jīng)過(guò)這樣的設(shè)置USART1就可以用了 使用USART_SendData(USART1,待發(fā)送數(shù)據(jù));
也可以使用重映射過(guò)的 printfh 函數(shù)來(lái)發(fā)送數(shù)據(jù).
重映射過(guò)程如下
Int fputc(intch,FILE *f)//需要添加 stdio.h 頭文件
{
       USART_SendData(USART1,ch);
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//這段話表示如果發(fā)送數(shù)據(jù)沒(méi)有結(jié)束 就聽(tīng)在這里等待
}      
經(jīng)過(guò)以上的配置可以發(fā)送和接受數(shù)據(jù) 但是不能產(chǎn)生USART中斷
需要USART中斷可以 這樣設(shè)置
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);
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表