久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM32串口通信程序

作者:亦夢云煙   來源:亦夢云煙   點擊數:  更新時間:2014年06月20日   【字體:

當你需要設計一個上位機是串口通信必然是最基本的組件,STM32固件庫為串口通信的操作提供了很多有用的函數,使得我們在使用串口時不必關注底層硬件的操作,使用相關函數即可,下面介紹串口操作的要點。

使用串口必然就要用到GPIO口,那么第一步就是配置GPIO口,STM32USART1的發送和接受引腳分別是PA9,PA10,初始化該兩只引腳的操作如下:
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);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
配置PA9為復用推挽輸出,PA10為浮空輸入。
打開PA口和串口時鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
配置串口工作模式:
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); 

 
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
配置接受中斷:
NVIC_InitTypeDef NVIC_InitStructure; 
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
 NVIC_Init(&NVIC_InitStructure);
以上均為串口硬件的配置,為了方便的使用stdio.h中的printf函數,還需要重定向fputc函數:
///重定向c庫函數printf到USART1
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return (ch);
}
好了,下面就可以直接在主函數中使用printf函數輸出了,在接收字符時,需要在中斷函數中編寫相應的函數:
void USART1_IRQHandler(void)
 
 unsigned char ch;
 if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET) 
 ch = USART_ReceiveData(USART1); 
 printf("%c",ch); 
}
效果如下:在主函數中輸出想要輸出的內容,在串口調試助手中輸入內容,最后所有字符都顯示在串口調試助手的接收處:

在本次實驗中有一個小問題需要注意,本人因開始不知道這個原因,調試了一整個下午和晚上,實在是浪費了太多時間,在這了與大家分享,在options for target中一定要勾選use Microlib,否則即使程序代碼是對的也不會像串口發送消息。
關閉窗口
主站蜘蛛池模板: 国产一二三区免费视频 | 精品av| 一区二区三区在线 | 欧 | 成人精品在线观看 | 亚洲高清av在线 | 黄色大片免费看 | 色一情一乱一伦一区二区三区 | 欧美一区二区在线播放 | 国产精品一区二区在线 | 午夜免费在线观看 | 成人国产网站 | 夜夜摸夜夜操 | 天堂色区 | 国产亚洲日本精品 | 看av网 | 亚洲精品视频免费 | 精品91视频| 精品丝袜在线 | 国产精品久久 | 九九精品视频在线 | 天天躁日日躁aaaa视频 | 中文字幕不卡在线88 | 97日韩精品| 日韩精品av一区二区三区 | 一级毛片视频在线 | 国产精品久久欧美久久一区 | 色综合天天综合网国产成人网 | 色综合天天天天做夜夜夜夜做 | 欧美午夜精品 | 久久99精品国产99久久6男男 | 99色视频| 西西裸体做爰视频 | 中文字幕在线视频精品 | 给我免费的视频在线观看 | 在线一区 | 国产一区二 | 中国美女一级黄色片 | 久久蜜桃av一区二区天堂 | 一区二区三区不卡视频 | 国内精品免费久久久久软件老师 | 成人在线观看中文字幕 |