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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4113|回復: 0
收起左側

stm32串口通信程序-查詢方式

[復制鏈接]
ID:99624 發表于 2015-12-27 02:38 | 顯示全部樓層 |閱讀模式
//將收到的數據返回,經測試可以,利用查詢方式
#include"stm32f10x_it.h"
#include "stm32f10x_conf.h"
  void delayms(unsigned intcount);//延時程序
  void RCC_Configuration(void); //時鐘配置
  void USART_Configuration(void);//定義串口初始化函數
  void NVIC_Configuration( void);
  void Uart1_PutChar(u8 ch);
  void Uart1_PutString(u8* buf , u8len);
   voidGPIO1_Configuration(void);
   voidGPIO_Configuration(void);
void RCC_Configuration(void)
{
    ErrorStatusHSEStartUpStatus;

    //使能外部晶振
   RCC_HSEConfig(RCC_HSE_ON);
    //等待外部晶振穩定
    HSEStartUpStatus =RCC_WaitForHSEStartUp();
   //如果外部晶振啟動成功,則進行下一步操作
   if(HSEStartUpStatus==SUCCESS)
    {
       //設置HCLK(AHB時鐘)=SYSCLK
       RCC_HCLKConfig(RCC_SYSCLK_Div1);

       //PCLK1(APB1) = HCLK/2
       RCC_PCLK1Config(RCC_HCLK_Div2);

       //PCLK2(APB2) = HCLK
       RCC_PCLK2Config(RCC_HCLK_Div1);
      

       RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_4);
       //啟動PLL
       RCC_PLLCmd(ENABLE);
       //等待PLL穩定
       while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) ==RESET);
       //系統時鐘SYSCLK來自PLL輸出
       RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
       //切換時鐘后等待系統時鐘穩定
       while(RCC_GetSYSCLKSource()!=0x08);
    }

//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 ,ENABLE);
}
int main(void)
{
  int i;
    unsigned char str[]="A";
u8 uart2_get_data;
RCC_Configuration();
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA |
                       RCC_APB2Periph_AFIO, ENABLE);//使能各部分時鐘
//NVIC_Configuration(); //串口中斷配置
//RCC中打開相應串口
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 ,ENABLE);
GPIO_Configuration();
//串口1的管腳初始化
       GPIO1_Configuration();
USART_Configuration();
while (1)
  {
   
  GPIO_SetBits(GPIOA,GPIO_Pin_8) ;
  GPIO_SetBits(GPIOA,GPIO_Pin_11) ;
  GPIO_SetBits(GPIOA,GPIO_Pin_15) ;
     
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==SET)
{
uart2_get_data = USART_ReceiveData(USART2);
for(i=0;i<1000000;i++);
USART_SendData(USART2,uart2_get_data);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) ==RESET);
}
  GPIO_ResetBits(GPIOA,GPIO_Pin_11);
  GPIO_ResetBits(GPIOA,GPIO_Pin_15);
  for(i=0;i<1000000;i++);

  }

}  
void GPIO_Configuration(void)
{

  GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);

}
   
   voidGPIO1_Configuration(void)
{

  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;          //管腳2
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP;      //復用推挽輸出
  GPIO_Init(GPIOA, &GPIO_InitStructure);             //TX初始化


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;          //管腳3
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING; //浮空輸入
  GPIO_Init(GPIOA, &GPIO_InitStructure);             //RX初始化

}

void delayms(unsigned int count)
{
unsigned int i,j;
for(i=0;i
for(j=0;j<5000;j++);
}

void USART_Configuration(void)//串口初始化函數

{
   USART_ClockInitTypeDefUSART_ClockInitStructure;
   
  //串口參數初始化
  USART_InitTypeDef USART_InitStructure;//串口設置恢復默認參數
//初始化參數設置
  USART_InitStructure.USART_BaudRate = 9600;//波特率9600
  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;//打開Rx接收和Tx發送功能
  USART_Init(USART2,&USART_InitStructure); //初始化
//USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//使能接受中斷,在接受移位 寄存器中有數據是產生
  USART_ClockInitStructure.USART_Clock =USART_Clock_Disable;
  USART_ClockInitStructure.USART_CPOL =USART_CPOL_Low;
  USART_ClockInitStructure.USART_CPHA =USART_CPHA_2Edge;
  USART_ClockInitStructure.USART_LastBit =USART_LastBit_Disable;
   USART_ClockInit(USART2,&USART_ClockInitStructure);

USART_Cmd(USART2, ENABLE); //啟動串口

}
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//選擇分組方式0
  

  NVIC_InitStructure.NVIC_IRQChannel =USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
void Uart1_PutChar(u8 ch)
{
   
    USART_SendData(USART2,(u8) ch);
   while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
   
  
}

void Uart1_PutString(u8* buf , u8 len)
{
   u8 i;
    for( i=0;i
    {
       Uart1_PutChar(*buf++);
    }
}


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷狠狠 | 日韩av免费在线观看 | 亚洲精品在线播放 | 欧美成年视频 | 久久久久电影 | 成人欧美一区二区三区在线播放 | 久久精品成人一区 | 精品日韩一区二区 | 亚洲第一网站 | 国产精品国产三级国产aⅴ入口 | 精品免费 | 欧美九九九| 欧美亚洲网站 | 亚洲91| 欧美日韩精品一区二区三区四区 | 国产亚洲成av人在线观看导航 | 国产欧美精品区一区二区三区 | av入口 | 国外激情av | 在线一区视频 | 超碰伊人 | 国产一区二区视频在线 | 国产精品自拍啪啪 | 欧美日韩亚洲视频 | 欧美一区二区三区在线观看视频 | 日韩免费av网站 | www精品美女久久久tv | 欧美国产一区二区 | 国产农村妇女精品一二区 | 午夜视频一区 | 97精品国产97久久久久久免费 | 精品国产乱码久久久久久88av | 日韩一区二区在线视频 | 国产精品九九九 | 国产精品国产a级 | 亚洲欧美日韩高清 | www.中文字幕av| 在线国产小视频 | 九九九久久国产免费 | 久久久网 | 国产免费一区二区 |