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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4178|回復: 4
打印 上一主題 下一主題
收起左側

stm32串口通信程序-中斷方式

[復制鏈接]
跳轉到指定樓層
樓主
ID:99624 發表于 2015-12-27 02:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經過調試在stm32F101CBT6中實現通信。注意還要配一個TTL轉usb接口,才能進行通信。實現字符串回發
#include"stm32f10x_it.h"
#include "stm32f10x_conf.h"
void RCC_Configuration(void); //時鐘配置
void USART_Configuration(void); //定義串口初始化函數
void NVIC_Configuration( void);
void Uart1_PutChar(u8 ch);
void Uart1_PutString(u8* buf , u8 len);
void GPIO1_Configuration(void);
void GPIO_Configuration(void);
int USART_RX_BUF[64]=0;
int USART_RX_STA=0;
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;
u8 len;
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();
NVIC_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_RX_STA&0x80)

{
len=USART_RX_STA&0x3f;//得到此次接收到的數據長度
USART2->DR=len;
  while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);
for(i=0;i
{USART2->DR=USART_RX_BUF[i];
  while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);//等待發送結束}
}
USART_RX_STA=0;
}
  for(i=0;i<1000000;i++);
  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 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); //啟動串口
   USART_ITConfig(USART2,USART_IT_RXNE, ENABLE);
}
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//選擇分組方式0

  NVIC_InitStructure.NVIC_IRQChannel =USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

在stm32f10x_it.c
void USART2_IRQHandler(void); //放在頭文件里面也可以
extern  intUSART_RX_BUF[64];//聲明全局變量,此處不能夠賦值
extern  int USART_RX_STA;//聲明全局變量,此處不能夠賦值

void USART2_IRQHandler(void)

{

    unsigned intres;
   if(USART_GetFlagStatus(USART2,USART_IT_RXNE)==SET)
    {            
       res =USART_ReceiveData(USART2);
if((USART_RX_STA&0x80)==0)//接收未完成
{
USART_RX_BUF[USART_RX_STA]=res;
USART_RX_STA++;
if(USART_RX_STA>63)
USART_RX_STA=0;
if(res=='#')
USART_RX_STA|=0x80;
}            
    }

   if(USART_GetITStatus(USART2, USART_IT_RXNE) !=RESET)

   {
        

       USART_ClearITPendingBit(USART2,USART_IT_RXNE);

    }

}




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

使用道具 舉報

沙發
ID:67175 發表于 2016-3-21 22:43 | 只看該作者
分析的簡單易懂,贊一個;
回復

使用道具 舉報

板凳
ID:370386 發表于 2018-7-17 11:55 | 只看該作者
支持一個
回復

使用道具 舉報

地板
ID:367948 發表于 2023-11-18 16:51 | 只看該作者
程序可以下載碼
回復

使用道具 舉報

5#
ID:59738 發表于 2023-11-21 10:57 | 只看該作者
分析的簡單易懂,贊一個; 能夠幫我開拓思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射天天操天天干 | 免费精品视频一区 | 欧美激情欧美激情在线五月 | 91伊人| 在线观看精品视频网站 | 久久国产精品一区二区三区 | 欧美精三区欧美精三区 | 亚洲一区中文字幕 | 围产精品久久久久久久 | 中文字幕在线观看一区 | 日韩一二区 | 欧美v在线| 成人综合视频在线 | 一级看片免费视频 | 欧美一级免费片 | 国产不卡一区 | 365夜爽爽欧美性午夜免费视频 | 99在线精品视频 | 免费看国产一级特黄aaaa大片 | 久久精品影视 | 精品国产精品一区二区夜夜嗨 | 91xxx在线观看 | 亚洲精品1区 | 久久久久免费精品国产小说色大师 | 国产精品明星裸体写真集 | 久久午夜精品 | 中文字幕一区在线观看视频 | 中文字幕在线免费视频 | 成人亚洲视频 | 一区二区免费 | 91久久国产综合久久91精品网站 | 中文精品视频 | 日韩精品极品视频在线观看免费 | 中日韩av| 色黄视频在线 | 日韩激情视频一区 | 国产午夜精品久久久久 | 欧美videosex性极品hd | 毛片视频观看 | 精品网| 欧美一级艳情片免费观看 |