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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32串口3與串口1傳數據只能傳一半就不能呢個傳了怎么回事

[復制鏈接]
跳轉到指定樓層
樓主
ID:262045 發表于 2018-3-7 18:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
定時器
extern u8 flag_200ms,timex;
extern vu16 USART3_RX_STA;
extern vu16 USART1_RX_STA;
void TIM3_IRQHandler(void)
{  
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{        
  flag_200ms++;
  timex=1;
  TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );   
  
}     
}
      
void TIM2_IRQHandler(void)
{  
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{  

  USART3_RX_STA|=1<<15;
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );     
  TIM_Cmd(TIM2, DISABLE);   
}     
}
void TIM4_IRQHandler(void)
{  
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
{  

  USART1_RX_STA|=1<<15;
  TIM_ClearITPendingBit(TIM4, TIM_IT_Update  );      
  TIM_Cmd(TIM4, DISABLE);  
}     
}

   
void TIM2_Int_Init(u16 arr,u16 psc)
{
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );

TIM_Cmd(TIM1,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);

}
void TIM3_Int_Init(u16 arr,u16 psc)
{
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );

TIM_Cmd(TIM3,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);

}  
void TIM4_Int_Init(u16 arr,u16 psc)
{
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE );

TIM_Cmd(TIM4,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);

}  

串口1的配置
u8 USART1_RX_BUF[USART1_MAX_RECV_LEN];     
u8  USART1_TX_BUF[USART1_MAX_SEND_LEN];   
vu16 USART1_RX_STA=0;   
void USART1_IRQHandler(void)
{
u8 Res;      
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{  
  Res =USART_ReceiveData(USART1);   
   while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
  USART_SendData(USART3,Res);   
  
  
  if((USART1_RX_STA&(1<<15))==0)
  {
   if(USART1_RX_STA<USART1_MAX_RECV_LEN)
   {
    TIM_SetCounter(TIM2,0);
    if(USART1_RX_STA==0)   
    {
     TIM_Cmd(TIM2,ENABLE);
    }
    USART1_RX_BUF[USART1_RX_STA++]=Res;   
   }else
   {
    USART1_RX_STA|=1<<15;   
   }
  }
}                  
}   

void usart_init(u32 bound)
{  
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);


  USART_DeInit(USART1);
   //USART1_TX   PA9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    //USART1_RX   PA10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//????ê?è?
  GPIO_Init(GPIOA, &GPIO_InitStructure);  

USART_InitStructure.USART_BaudRate = bound;
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_Cmd(USART1, ENABLE);                    


  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  

//éè???D??ó??è??
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);


TIM4_Int_Init(2000-1,7200-1);  
USART1_RX_STA=0;  
TIM_Cmd(TIM4,DISABLE);   
}
串口3的配置
u8 USART3_RX_BUF[USART3_MAX_RECV_LEN];     
u8  USART3_TX_BUF[USART3_MAX_SEND_LEN];   

vu16 USART3_RX_STA=0;   
void USART3_IRQHandler(void)
{
u8 res;      
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{  
  res =USART_ReceiveData(USART3);

  
   while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
  USART_SendData(USART1,res);
  
  if((USART3_RX_STA&(1<<15))==0)
  {
   if(USART3_RX_STA<USART3_MAX_RECV_LEN)
   {
    TIM_SetCounter(TIM2,0);              
    if(USART3_RX_STA==0)     
    {
     TIM_Cmd(TIM2,ENABLE);
    }
    USART3_RX_BUF[USART3_RX_STA++]=res;   
   }else
   {
    USART3_RX_STA|=1<<15;
   }
  }
}                  
}   

void usart3_init(u32 bound)
{  
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);


  USART_DeInit(USART3);
   //USART3_TX   PB10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure); //3?ê??ˉPB10
   
    //USART3_RX   PB11
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOB, &GPIO_InitStructure);  

USART_InitStructure.USART_BaudRate = bound;
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(USART3, &USART_InitStructure); /
  
USART_Cmd(USART3, ENABLE);                  


  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);


NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
NVIC_Init(&NVIC_InitStructure);


  TIM2_Int_Init(2000-1,7200-1);  
USART3_RX_STA=0;  
  TIM_Cmd(TIM2,DISABLE);   
}
int main(void)
{      

delay_init();      
LED_Init();  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  TIM3_Int_Init(2000,7200);//200ms
  usart_init(115200);      
usart3_init(115200);
while(1)
{
        }


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩国电影久久 | 午夜久久久| 99免费在线视频 | 蜜桃视频麻豆 | 中文字幕一二三 | 精品动漫一区 | 神马影院一区二区三区 | 久色视频在线 | 中文字幕亚洲精品 | 谁有毛片| 欧美黄色片在线观看 | 亚洲网站在线观看 | 精品乱码一区二区 | 国产精品国产成人国产三级 | 美女国产精品 | 欧美精品在线一区二区三区 | 亚洲欧美男人天堂 | 久久久久久久久国产精品 | 精品亚洲一区二区 | 男女在线免费观看 | 狠狠狠色丁香婷婷综合久久五月 | 日本精品一区二区三区四区 | 人人叉| 欧美三级成人理伦 | 中文久久| 国产激情一区二区三区 | 久久综合影院 | 国精久久 | 国产精品久久久久久久久久三级 | 国产成在线观看免费视频 | 午夜电影合集 | 天堂网avav | 午夜免费视频 | 美国黄色毛片 | 成年人视频免费在线观看 | 国外成人在线视频网站 | 久久99视频精品 | 国产乱码久久久久久一区二区 | 日韩欧美中文在线 | 亚洲精品久久久久久久久久久 | 岛国av免费看|