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

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

STM32單片機串口通訊代碼

作者:佚名   來源:不詳   點擊數:  更新時間:2014年05月16日   【字體:

  在STM32開發中,串口是我們最常用的接口。通過串口,我們很方便地把數據輸出到電腦,方便我們進行程序調試。下面我們來看看STM32的串口通訊代碼。

 
要實現串口通訊,我們要進行下面幾個步驟:
 
首先:要打開GPIO口的時鐘和串口模塊時鐘。在圓點博士小四軸中,我們用的是GPIOA和COM1模塊。
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
 
 
 
其次:要指定GPIO口,即確定哪些IO是用于串口通訊的。記得使用GPIO_Mode_AF_PP模式
 
  GPIO_InitStructure.GPIO_Pin = BS004_COM1_TX;     //圓點博士:設置PA9管腳為串口TX
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //圓點博士:設置串口TX最大允許輸出速度
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     //圓點博士:設置串口TX為輸出
  GPIO_Init(GPIOA, &GPIO_InitStructure);
 //
  GPIO_InitStructure.GPIO_Pin = BS004_COM1_RX;     //圓點博士:設置PA9管腳為串口RX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //圓點博士:設置串口RX為輸入
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
 
 
 
第三步:設置串口模塊參數,如波特率,奇偶校驗這些。
 
  USART_InitStructure.USART_BaudRate = 115200;         //圓點博士:設置串口波特率為115200
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;   //圓點博士:設置串口數據長度為8位
  USART_InitStructure.USART_StopBits = USART_StopBits_1;        //圓點博士:設置串口停止位長度為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);   //圓點博士:設置串口參數
 
 
第四步:如果使用串口中斷的話,還要設置中斷優先級。下面例子設置為最高優先級0。
 
 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
 
 
最后一步,就是打開中斷,并使能串口模塊拉。
 
  USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //圓點博士:允許接收中斷
  USART_Cmd(USART1, ENABLE); 
 
 
 
上面例子只啟動了接收中斷。這樣,當STM32串口接收到數據的時候,代碼就會自動跳轉到中斷代碼里面執行對應的操作。
 
 
 
那么,對于發送,怎么辦呢? 我們采用查詢的方式來發送。
 
void BS004_COM1_Send_Char(unsigned char ascii_code)       //圓點博士:發送一個字符
{
  USART_SendData(USART1,ascii_code);
  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} //圓點博士:等待直到發送完成
}
 
 
 
如過要發送單字符,使用下面的方法:
 
 BS004_COM1_Send_Char('/');                //圓點博士:發送字符/
 BS004_COM1_Send_Char(13);                 //圓點博士:發送回車字符
 
 
 
如過要發送字符串,則使用下面的方法。
 
void BS004_COM1_Send_Str_Body(unsigned char* str_buf)  //圓點博士:發送一個指定長度的字符串
{
 unsigned char i,str_len;
 str_len=0;
 for(i=0;i<64;i++)
 { 
  str_len++;
  if(str_buf[i]=='.') break;
 }
  for(i=0;i
}
 
在上面的例子中,使用了符號.作為字符串結束標志。
關閉窗口

相關文章

主站蜘蛛池模板: 国产高清视频一区 | wwwxx在线观看 | 国产精彩视频一区 | 亚洲激情一区二区三区 | 国产精品毛片久久久久久久 | 国产 日韩 欧美 制服 另类 | 91在线| 亚洲精品av在线 | 人人擦人人| av黄色免费在线观看 | 日韩高清一区 | 成人免费xxxxx在线视频 | 久久久精品黄色 | 91免费视频| 国产精品色一区二区三区 | 欧美一级www片免费观看 | 亚洲视频 欧美视频 | av中文字幕在线 | 一级毛片在线播放 | 免费高潮视频95在线观看网站 | 5060网一级毛片 | 精品一区二区三区在线视频 | 在线男人天堂 | 影音先锋久久 | 一级网站 | 精品亚洲一区二区 | 欧美国产亚洲一区二区 | 亚洲狠狠 | 欧美日韩在线观看一区 | 欧美一级欧美三级在线观看 | 成人一区二区在线 | 一区在线观看 | 亚洲首页 | 欧美一级黄色片 | 午夜无码国产理论在线 | 国精久久| 欧美日韩在线综合 | 精品一区欧美 | 免费在线观看毛片 | 欧美国产日韩在线观看成人 | 日韩在线观看中文字幕 |